小编los*_*rje的帖子

金字塔和变色龙中的ajax小部件

我希望能够在服务器端轻松创建由变色龙和金字塔支持的ajax'小部件'.

Pyramid是否提供任何管道代码,使编写小部件变得容易?

我目前的方法是我有一个使用home.pt作为渲染器的主视图.home.pt使用宏base.pt定义页面结构,并为home.pt提供填充的插槽.base.pt还使用了我编写的登录"widget"宏(参见下面的account_login_widget.pt).

从理论上讲,这一切听起来都很棒......我有一个可以在许多页面中使用的可重用登录小部件,但我目前的方法效果不佳.我的登录窗口小部件在其渲染器中使用了像$ {username}这样的变量(服务器需要定义).我希望登录小部件及其渲染尽可能独立.但是根据我目前的做事方式,主视图代码需要了解登录窗口小部件的需求,并在字典中提供用户名,formrender和其他变量.绝对不好......

我觉得我接近正确的想法,但遗漏了一些东西......

有什么想法吗?

base.pt:

<html>
<head></head>
<body>
<div id="container">
    <div id="header">
        <span metal:use-macro="load: account_login_widget.pt"></span>     
    </div>
    <div id="middle">
        <span metal:define-slot="content"></span>
    </div>
    <div id="footer"></div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

home.pt:

<div metal:use-macro="load: base.pt">
<span metal:fill-slot="content">
    <div>my stuff</div>
</span>
</div>
Run Code Online (Sandbox Code Playgroud)

account_login_widget.pt:

<span metal:define-macro="account_login_widget">
<script type="text/javascript">
(function($) {
    $.fn.my_function = function() {
        $('#login_form').submit(function(e) {
            e.preventDefault();

            // ajax call
            $.post(some_url, some_data, function(response) {
                $('#account_login_widget').html(response);
            });
        };
        return this;
    };
})(jQuery);

// Define the entry point    
$(document).ready(function() {
    $(document).my_function();
});
</script>

<div id="account_login_widget">
<div …
Run Code Online (Sandbox Code Playgroud)

python ajax pyramid chameleon template-tal

3
推荐指数
1
解决办法
1351
查看次数

如何将angular2与jinja2模板和烧瓶结合起来

在Angular 1取得巨大成功后,我开始使用Angular 2.我遵循了QuickstartTour of Heroes教程,一切都像魅力一样.

Lite服务器开始启动,我看到tsc在监视模式下运行,我甚至看到BrowserSync被连接起来.大!

但是,我需要开始让事情变得更加现实.

而不是使用lite服务器,如何使用flask dev或gunicorn服务器将所有这些工作,将初始index.html文件作为呈现的jinja模板提供?

给烧瓶开发服务器一个非常有用的尝试,我基本上将示例index.html的内容从教程复制到我的jinja模板中,然后运行npm run tsc:w并最终启动我的烧瓶开发服务器并希望最好.事情编译得很好.但是在浏览器中我看到了问题:

angular2-polyfills.js:332 Error: SyntaxError: Unexpected token <
    at ZoneDelegate.invoke (http://127.0.0.1:5000/static/node_modules/angular2/bundles/angular2-polyfills.js:332:29)
    at Zone.run (http://127.0.0.1:5000/static/node_modules/angular2/bundles/angular2-polyfills.js:227:44)
    at http://127.0.0.1:5000/static/node_modules/angular2/bundles/angular2-polyfills.js:576:58
Evaluating http://127.0.0.1:5000/app/main.js
Error loading http://127.0.0.1:5000/app/main.js`
Run Code Online (Sandbox Code Playgroud)

看着罪魁祸首transpile main.js文件,我看到:

(function(System, SystemJS, require) {<!doctype html>
<html>
<head lang='en'>
Run Code Online (Sandbox Code Playgroud)

所以,是的,这不会起作用......显然我的布线是乱七八糟的.

垫片,polyfill,反应扩展,systemjs,angular2本身有很多黑魔法,然后在tsc和lite服务器中抛出.不可否认,我还没有完成所有这些工作,这需要时间,但我希望能够让我的项目很快进入理智状态.

(我不介意在开发中使用lite服务器(BrowserSync是一个很好的特权),只要我可以配置它代理将返回渲染jinja模板的真正的烧瓶服务器.)

更新

这是实际的模板索引文件,我做了一些小的改动:

<!doctype html>
<html>
  <head lang="en">
    {% block head %}

    <meta charset="utf-8">

    <title>Angular 2 QuickStart</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">    
    <link rel="stylesheet" href="styles.css">
    <!-- 1. Load libraries --> …
Run Code Online (Sandbox Code Playgroud)

python jinja2 node.js flask angular

3
推荐指数
1
解决办法
5947
查看次数

自定义pyramid_formalchemy表单

我在pyramid_formalchemy中创建自定义表单时遇到问题.我怀疑包中有一个错误,并想确认我没有遗漏任何东西.我的设置如下:

def includeme(config):
    config.include('pyramid_formalchemy')
    # Adding the jquery libraries
    config.include('fa.jquery')
    # Adding the package specific routes
    config.include('myapp.web.formalchemy.faroutes')

    config.formalchemy_admin('admin',
                             models=[User],
                             forms=faforms,
                             session_factory=session,
                             view='fa.jquery.pyramid.ModelView',
                             factory='myapp.model.RootFactory')

    config.formalchemy_model('user',
                             model='myapp.model.user.User',
                             session_factory=session,
                             view='fa.jquery.pyramid.ModelView',
                             factory='myapp.model.RootFactory')
Run Code Online (Sandbox Code Playgroud)

faforms是一个包含我的自定义表单的模块:

from myapp.model.user import User

from formalchemy import FieldSet
from formalchemy import Grid

class UserFieldSet(FieldSet):
    def __init__(self):
        FieldSet.__init__(self, User)
        self.configure()

class UserGrid(Grid):
    def __init__(self):
        Grid.__init__(self, User)
        self.configure()
Run Code Online (Sandbox Code Playgroud)

如果我评论上面的两个类,formalchemy工作正常.我可以查看用户,我可以编辑它们.

当我把这两个课程放进去遇到问题时.问题是pyramid_formalchemy从模块的命名空间中获取UserGrid和UserFieldSet,然后尝试使用它们,就好像它们是实例化的类一样.这打破了事情.另一方面,如果pyramid_formalchemy没有找到将动态创建类的类并实例化它们.我相信有问题的代码在pyramid_formalchemy/views.py中,第236行从get_grid()函数开始:

def get_grid(self):
    """return a Grid object"""
    request = self.request
    model_name = request.model_name
    form_name = '%sGrid' % model_name
    if hasattr(request.forms, form_name):
        g = getattr(request.forms, …
Run Code Online (Sandbox Code Playgroud)

python formalchemy pyramid

2
推荐指数
1
解决办法
759
查看次数

如何在sqlalchemy中映射postgres EARTH列

我正在使用sqlalchemy,也使用alembic进行迁移(和flask-sqlalchemy)。我有一个使用EARTH数据类型的postgres表。

CREATE TABLE things
(
  id INTEGER PRIMARY KEY NOT NULL,
  name TEXT,
  earth_location EARTH
)
Run Code Online (Sandbox Code Playgroud)

这是我的sqlalchemy映射:

class Thing(db.Model):
    __tablename__ = 'things'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.UnicodeText, nullable=False)
    earth_location = db.Column(???)
Run Code Online (Sandbox Code Playgroud)

如何映射接地柱?

Alembic迁移能够应付吗?

谢谢!

python sqlalchemy

1
推荐指数
1
解决办法
359
查看次数