2016-04-15 4 views
-1

Djangoプロジェクトのどこからでも現在ログインしているユーザにアクセスできる関数またはグローバルオブジェクトがありますか?そうでない場合、回避策は何ですか?ノーそこテンプレートviews.pyコード内のどこからでも現在のログインユーザにアクセスする

request.user 
+0

これはチュートリアルのパート1または2でカバーされていると確信しています。 – Sayse

+0

@ Sayseビューやテンプレート内からユーザーオブジェクトにアクセスする方法は絶対に明確です。しかし、私は別のutils.pyファイルを持っています。その中には、ユーザオブジェクトへのアクセスが必要なものがあります。まだチュートリアルからそれを見逃していると思うなら、 – AmirM

答えて

-3

ではありません。 Djangoはすべてリクエストとレスポンスに関するものです。ユーザーは特定の要求に固有のものです。要求があると、request.userとしてユーザーにアクセスできます。それ以外の場合は、できません。

+0

を表示してください。決してOPの質問に対する答えです。 – kevr

1

{{ user }} 

+0

ありがとうございます。ソリューションの1つが、カスタムミドルウェアクラスを作成することになることが判明しました。[ここ](https://blndxp.wordpress.com/2016/03/04/django-get-current-user-anywhere-in-your-code -using-a-middleware /)。私のための作品 – AmirM

+0

カスタムミドルウェアを示唆する答えに私のコメントを参照してください、コードのいくつかの部分はWebコンテキストの外でも動作する必要がありますので、ユーザーがグローバルオブジェクトではない理由があります –

0

Found this solution。その後、設定で新しいカスタムミドルウェアクラスをMIDDLEWARE_CLASSESに追加する必要があります

+1

もちろん、要求をグローバルとして公開します。このアプローチの問題点は、ユーザーが本質的に要求固有であることです。たとえば、ユーザーをモードコードで使用し始めた場合、モデルコードは(djangoコンソールのような)ユーザーを持たないコンテキストでは読み込まれません。 –

関連する問題