如何在网站上创建小部件,例如登录表单、动态菜单(从数据库中获取的项目)、网站统计信息?
我知道您可以渲染一个从基本模板扩展出来的模板。在基本模板中,您可以创建这些小部件。
但我不知道如何将逻辑从基本模板移动到我的代码中。例如,块的选择数据。这样的操作当然可以在模板中完成,但在我看来这将是一个糟糕的方法。
对不起,我的英语不好。如果你不能理解,我会尝试改写。
您将使用一个名为WTForms的 python 库。它可以帮助您编写代码以创建由数据库支持的表单和其他小部件,您可以使用 jinja2 模板呈现这些小部件。
class YourForm(Form):
your_field1 = TextField()
....
your_fieldn = SubmitField()
@app.route('/')
def view():
form=YourForm()
return render_template('your.html', form=form)
In your.html
<form >
{{ form.your_field1 }}
....
{{ form.your_fieldn }}
</form>
查看此烧瓶模式以进行表单验证和渲染以了解更多信息。
编辑:要创建可用于所有模板的全局变量,有两种方法:
您可以使用jinja environment 的全局字典。这是代码:
app.jinja_env.globals.update({'variable':1})
您可以使用ContextProcessor。代码:
@app.context_processor
def inject_variable():
return dict(variable=1)
现在您可以variable
在应用程序的任何模板中访问。