3

C#.NETからPython/Flaskに移行しています。

.NETでは、MasterPage, UserControl, PartialViewそれぞれに独自のコードがあります。

たとえば、ログインチェック機能を保存して、好きな場所にLogin.ascx.csレンダリングできます。Login.ascxログインしている場合はウェルカムメッセージが表示され、ログインしていない場合はログインフォームが表示されます。

しかし、Flaskでは{% include 'login.html' %}、静的htmlファイルを含むものしか見つかりませんでした。

このデザインをFlaskに実装するにはどうすればよいですか?

私は今答えを持っているかもしれません:

私は使っていないのでg.user、助けを求めてここに来ました。他の誰かが提案し@app.context_processorました。私はそれを試みています、そしてそれは私が望むもののようです。と同様のグローバルにアクセス可能なデザインg

4

2 に答える 2

2

その名前が何であるかにかかわらず、include静的HTMLファイルのコンテンツを挿入しないと思われるかもしれません。実際には、レンダリングされたJinjaテンプレートのコンテンツが挿入され、MVCからの部分ビューのように機能します(正しく理解している場合)。デフォルトでは、親テンプレートコンテキストにアクセスできます。したがって、たとえば、ユーザーをに保存している場合、デフォルトでアクセス可能g.userであるため、次のgように簡単に実行できます。

<-- login.html -->
{% if g.user.is_anonymous() %}
Login form goes here
{% else %}
Greetings {{g.user.full_name}}!
{% endif %}

そして{% include "login.html" %}、ログインフォーム/ユーザーグリーティングを表示したい場所ならどこでも。

編集への応答

userすべてのテンプレートにアクセスできることを確認したい場合は、実際に使用して:context_processorを追加できます。user

@app.context_processor
def add_user():
    # Get user
    return {"user": user}
于 2012-08-28T15:30:30.130 に答える
0

Flaskの拡張であるFlask-Loginを調べる必要があります。それを構成した後、あなたはあなたの要件を達成することができます。

于 2012-08-28T13:25:01.417 に答える