3

如何在网站上创建小部件,例如登录表单、动态菜单(从数据库中获取的项目)、网站统计信息?

我知道您可以渲染一个从基本模板扩展出来的模板。在基本模板中,您可以创建这些小部件。

但我不知道如何将逻辑从基本模板移动到我的代码中。例如,块的选择数据。这样的操作当然可以在模板中完成,但在我看来这将是一个糟糕的方法。

对不起,我的英语不好。如果你不能理解,我会尝试改写。

4

1 回答 1

4

您将使用一个名为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>

查看此烧瓶模式以进行表单验证和渲染以了解更多信息。

编辑:要创建可用于所有模板的全局变量,有两种方法:

  1. 您可以使用jinja environment 的全局字典。这是代码:

       app.jinja_env.globals.update({'variable':1})
    
  2. 您可以使用ContextProcessor。代码:

    @app.context_processor
    def inject_variable():
        return dict(variable=1)
    

现在您可以variable在应用程序的任何模板中访问。

于 2012-07-10T20:43:02.420 回答