テンプレートフィルターと一緒にフラスコスクリプトを使用する

アンジェロス

jinja2テンプレートフィルターを使用するフラスコアプリケーションがあります。テンプレートフィルターの例は次のとおりです。

@app.template_filter('int_date')
def format_datetime(date):
    if date:
        return utc_time.localize(date).astimezone(london_time).strftime('%Y-%m-%d %H:%M')
    else:
        return date

これは、デコレータが定義される前にインスタンス化されたアプリがある場合は正常に機能しますが、フラスコスクリプトマネージャーと組み合わせてアプリファクトリを使用している場合、インスタンス化されたアプリはありません。以下の場合の例

def create_my_app(config=None):
    app = Flask(__name__)
    if config:
        app.config.from_pyfile(config)

    return app

manager = Manager(create_my_app)
manager.add_option("-c", "--config", dest="config", required=False)
@manager.command
def mycommand(app):
    app.do_something()

Managerは、インスタンス化されたアプリまたはアプリファクトリのいずれかを受け入れるため、一見すると、次のことができるように見えます。

app = create_my_app()

@app.template_filter('int_date')
....

manager = Manager(app)

このソリューションの問題は、インスタンス化中にアプリが既に構成されているため、マネージャーがオプションを無視することです。では、誰かがフラスコスクリプト拡張機能と一緒にテンプレートフィルターをどのように使用することになっているのでしょうか?

クリスシーモア

ここで青写真が役立ちます。ブループリントcore定義し、すべてのカスタムテンプレートフィルターをたとえばに配置しcore/filters.pyます。

ブループリントを使用するときにフラスコ内のアプリケーションにフィルターを登録するには、のapp_template_filter代わりにを使用する必要がありますtemplate_filterこのようにして、デコレータパターンを使用してフィルタを登録し、アプリケーションファクトリアプローチを使用できます。

ブループリントを使用するアプリケーションの一般的なディレクトリレイアウトは、次のようになります。

├── app
│   ├── blog
│   │   ├── __init__.py    # blog blueprint instance
│   │   └── routes.py      # core filters can be used here
│   ├── core
│   │   ├── __init__.py    # core blueprint instance
│   │   ├── filters.py     # define filters here
│   │   └── routes.py      # any core views are defined here
│   └── __init__.py        # create_app is defined here & blueprint registered
└── manage.py              # application is configured and created here              

このアプローチの最小限の実用例については、https//github.com/iiSeymour/app_factoryを参照してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

フローティングアクションボタン、スワイプリフレッシュレイアウトとコーディネーターレイアウト、およびツールバーレイアウト動作を一緒に使用する

分類Dev

C:使用エラー:「複合代入」と「プレフィックスデクリメント」を一緒に使用

分類Dev

ffmpegと一緒にフィルタリングとストリームコピーを使用する方法は?

分類Dev

Goテンプレート:ネストされた構造体のフィールドと{{range}}タグを一緒に使用します

分類Dev

コンストラクター関数と一緒にプロトタイプと非プロトタイプの両方のオブジェクトリテラルを使用するにはどうすればよいですか?

分類Dev

テンプレートクラスをヘッダーと実装ファイルに分割するときにタイプエイリアスを使用する

分類Dev

遅延読み込みとレコード数でデータをフィルタリングするためのベストプラクティス

分類Dev

アダプタクラスとアクティビティでインターフェイスを一緒に使用する方法

分類Dev

GithubAPIを使用して所有者と一緒にプルリクエストフィルターを取得する方法

分類Dev

セレンコードの使用ブートストラップモーダルでテキストフィールドにデータを送信する方法

分類Dev

デコレータをクラスコンストラクタと一緒に使用する

分類Dev

StageGLコンテキストでのフィルターとスプライトの使用に関する問題

分類Dev

.bashrcでインタラクティブコマンド(スクリプトなど)を使用するときにフォーク爆弾を防止する

分類Dev

ポインタでプレフィックスとポストフィックスを一緒に使用すると奇妙な出力

分類Dev

Django:テンプレートのフォームフィールドをレンダリングするときにCSSクラスを追加する

分類Dev

角度グリッドには、インライン剣道グリッドのエディターテンプレート(リアクティブフォーム)を含む列があります。テンプレートコントロール(テキストボックス)とフォームはリンクしません

分類Dev

Antがプロパティファイルをクラスディレクトリにコピーする方法

分類Dev

コードファーストを使用するときにリレーションシップテーブルにフィールドがありません

分類Dev

フラッター。他のコンテンツと一緒にスクロールするlistview.builderの上のウィジェット?

分類Dev

リクエストコンテキストを使用せずにフラスコでテンプレートをレンダリングする方法

分類Dev

Sitecoreテンプレートフィールドでドロップリストタイプを使用する方法

分類Dev

Pythonでリストをソートしますが、プレフィックスのあるグループを一緒に保持します

分類Dev

コンパイル時にプリミティブテンプレートとクラステンプレートを評価する方法は?

分類Dev

styledを使用するマテリアルUIは、タイプスクリプトのタイポグラフィにコンポーネントプロップを渡すことができません

分類Dev

シェル スクリプトのサフィックスとプレフィックスの両方に一致するパターン

分類Dev

ggplot2でファセットタグとストリップラベルを一緒に使用する

分類Dev

フラスコで使用するテンプレートディレクトリを動的に選択するにはどうすればよいですか?

分類Dev

uMatrix:ファーストパーティのスクリプトとプラグインを無効にする

分類Dev

ボタンをクリックすると、プログラムでテキストフィールドにフォーカスが移動します

Related 関連記事

  1. 1

    フローティングアクションボタン、スワイプリフレッシュレイアウトとコーディネーターレイアウト、およびツールバーレイアウト動作を一緒に使用する

  2. 2

    C:使用エラー:「複合代入」と「プレフィックスデクリメント」を一緒に使用

  3. 3

    ffmpegと一緒にフィルタリングとストリームコピーを使用する方法は?

  4. 4

    Goテンプレート:ネストされた構造体のフィールドと{{range}}タグを一緒に使用します

  5. 5

    コンストラクター関数と一緒にプロトタイプと非プロトタイプの両方のオブジェクトリテラルを使用するにはどうすればよいですか?

  6. 6

    テンプレートクラスをヘッダーと実装ファイルに分割するときにタイプエイリアスを使用する

  7. 7

    遅延読み込みとレコード数でデータをフィルタリングするためのベストプラクティス

  8. 8

    アダプタクラスとアクティビティでインターフェイスを一緒に使用する方法

  9. 9

    GithubAPIを使用して所有者と一緒にプルリクエストフィルターを取得する方法

  10. 10

    セレンコードの使用ブートストラップモーダルでテキストフィールドにデータを送信する方法

  11. 11

    デコレータをクラスコンストラクタと一緒に使用する

  12. 12

    StageGLコンテキストでのフィルターとスプライトの使用に関する問題

  13. 13

    .bashrcでインタラクティブコマンド(スクリプトなど)を使用するときにフォーク爆弾を防止する

  14. 14

    ポインタでプレフィックスとポストフィックスを一緒に使用すると奇妙な出力

  15. 15

    Django:テンプレートのフォームフィールドをレンダリングするときにCSSクラスを追加する

  16. 16

    角度グリッドには、インライン剣道グリッドのエディターテンプレート(リアクティブフォーム)を含む列があります。テンプレートコントロール(テキストボックス)とフォームはリンクしません

  17. 17

    Antがプロパティファイルをクラスディレクトリにコピーする方法

  18. 18

    コードファーストを使用するときにリレーションシップテーブルにフィールドがありません

  19. 19

    フラッター。他のコンテンツと一緒にスクロールするlistview.builderの上のウィジェット?

  20. 20

    リクエストコンテキストを使用せずにフラスコでテンプレートをレンダリングする方法

  21. 21

    Sitecoreテンプレートフィールドでドロップリストタイプを使用する方法

  22. 22

    Pythonでリストをソートしますが、プレフィックスのあるグループを一緒に保持します

  23. 23

    コンパイル時にプリミティブテンプレートとクラステンプレートを評価する方法は?

  24. 24

    styledを使用するマテリアルUIは、タイプスクリプトのタイポグラフィにコンポーネントプロップを渡すことができません

  25. 25

    シェル スクリプトのサフィックスとプレフィックスの両方に一致するパターン

  26. 26

    ggplot2でファセットタグとストリップラベルを一緒に使用する

  27. 27

    フラスコで使用するテンプレートディレクトリを動的に選択するにはどうすればよいですか?

  28. 28

    uMatrix:ファーストパーティのスクリプトとプラグインを無効にする

  29. 29

    ボタンをクリックすると、プログラムでテキストフィールドにフォーカスが移動します

ホットタグ

アーカイブ