小编jwo*_*ady的帖子

使用Flask,WTForm,SQLAlchemy和Jinja2的完整多对一示例

这是我的HTML下拉菜单.该值是子表的主键.

<select id="category" name="category">
   <option selected value="__None"></option>
   <option value="1">Category Number One</option>
   <option value="2">Category Number Two</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我需要使用值整数1而不是"类别编号一"更新Post.category_id.这是我的代码.

# create new post
@app.route('/admin/post', methods=['GET', 'POST'])
@login_required # Required for Flask-Security
def create_post():
    form = PostForm()
    if form.validate_on_submit():
        post = Post(title=form.title.data,
                    body=form.body.data,
                    pub_date=form.pub_date.data,
                    cateogry_id=form.category.data)
        db.session.add(post)
        db.session.commit()
        flash('Your post has been published.')
        return redirect(url_for('admin'))
    posts = Post.query.all()
    return render_template('create_post.html', form=form, posts=posts)
Run Code Online (Sandbox Code Playgroud)

我试过制作......

cateogry_id=form.category.data
cateogry_id=form.category.value
Run Code Online (Sandbox Code Playgroud)

现在不是那么好!

python flask wtforms flask-sqlalchemy flask-wtforms

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

使用Google App Engine和Jinja2的相对网址

我将Jinja2与Google App Engine一起使用.在我尝试使用相对路径加载base.html与我的edit.html模板.

我的主题目录结构如下所示......

  • 应用程序根
    • 主题
      • 默认
        • 管理
          • edit.html
        • base.html文件

我在模板中尝试了这个...

{% extends "../base.html" %}
Run Code Online (Sandbox Code Playgroud)

返回此...

TemplateNotFound: ../base.html
Run Code Online (Sandbox Code Playgroud)

我这样做的时候......

{% extends "base.html" %}
Run Code Online (Sandbox Code Playgroud)

我的edit.html模板加载,但没有base.html.

如何从edit.html访问base.html,这是一个目录?

现在代码......

的app.yaml

application: myblog
version: 1
runtime: python27
api_version: 1
threadsafe: no

handlers:

- url: /admin/.*
  script: admin.app
  login: admin

- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: .*
  script: static.app

builtins:
- remote_api: on

libraries:
- name: webapp2
  version: "2.5.1"

- name: jinja2
  version: latest
Run Code Online (Sandbox Code Playgroud)

config.py

blog_name = 'My Blog'
theme = 'default' …
Run Code Online (Sandbox Code Playgroud)

google-app-engine jinja2

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

如何通过Python defaultdict迭代?

我有一本看起来像这样的字典.

defaultdict(<type 'list'>,
{
 2012: [Counter({1: 1, 2: 1, 4: 1}), 3],
 2013: [Counter({4: 2, 12: 1, 5: 1, 6: 1}), 5],
 2014: [Counter({4: 3, 1: 1, 2: 1, 3: 1}), 6]}
)
Run Code Online (Sandbox Code Playgroud)

我试图通过Counter dict迭代.像这样.

2012
1 1
2 1
1 4
3

2013
4 2
12 1
5 1
6 1
5
Run Code Online (Sandbox Code Playgroud)

这是我试过的代码.

for key, value in d.iteritems():
    for k, v in value:
        print k, v
Run Code Online (Sandbox Code Playgroud)

这是错误:

Traceback (most recent call last):
  File "C:/test.py", line 42, in <module>
    for …
Run Code Online (Sandbox Code Playgroud)

python

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