2017-05-23 1 views
0

私が理解する限り、flask.gは、現在の要求コンテキスト(たとえ技術的にはhereと記載されているアプリケーションのコンテキストでも)に一時的な記憶域を提供します。リクエストハンドラ中にg.my_dataにアクセスすると、my_dataが現在のリクエスト用であることが保証されます。 Djangoにはこれに相当するものがありますか?DjangoはFlask gに相当しますか? flask.gとflask.requestの間にデータを保存していますか?

私の実験では、Djangoのrequestオブジェクトは、ビュー関数に渡され、flask.gと同じように使用できます。私は単にrequest.my_dataを使用して、my_dataが現在の要求であることを保証することができます。

これは私がflask.gと同じようにflask.requestを使用して試したものですが、同等の結果が得られました。これはflask.gflask.request以上のものを提供しているのですが、flask.requestの属性は上書きされないという心配がありますか?

実際のリクエストハンドラ(フラスコ)またはビュー関数(django)とミドルウェア(django)または@before_request(フラスコ)ハンドラとの間でデータを共有しています。

This sourceリクエストにデータを入れることをおすすめしているようです。

同様にthis sourceです。

これは私に、以下の番号1についてはイエスと答えますが、数字2についてはさらに疑問に思っていますか?

TLDR:

  1. Djangoはflask.gと同等に使用することrequestできますか?
  2. flask.requestflask.gと等価に使用できますか、またはのメリットはflask.request以上ですか?

答えて

1

Djangoにはcontext_dataメソッドとget_context()メソッドがあります。このデータにアクセスするには、このようなビューでget_context_data()メソッドをオーバーライドします。

def get_context_data(self, **kwargs): 
    context = super(NameOfView, self).get_context_data(**kwargs) 
    context.update(...) 
    return context 
+0

私はあなたの使用例を理解していないと思います。ミドルウェアハンドラでデータを設定したい場合は、ビューハンドラでアクセス可能にします。私はrequestオブジェクトにdjangoがrequest.userで何を行うのかということだけを追加することを計画していました。 – Panda

関連する問題