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>

フォームの検証とレンダリングについては、このフラスコパターンを確認して、詳細を確認してください。

編集:すべてのテンプレートで使用できるグローバル変数を作成するには、次の2つの方法があります。

  1. jinja環境のグローバルdictを使用できます。これはコードです:

       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 に答える