追加DBクエリを避けるため、user.pk
をrequest
(ログインしているユーザー用)から入手したいと考えています。ビューに関係のないコードでrequest.userを取得するにはどうすればよいですか?
views
には、変数request
があります。このrequest
を他の場所(表示されていない)にするにはどうすればよいですか? HttpRequest
を直接インポートすると、HttpRequest
がuser
オブジェクトを取得するため、ミドルウェアの変更が原因で助けになりません。 user
オブジェクトでこの「修正済み」HttpRequest
を取得するにはどうすればよいですか?インポートするには何が必要ですか?
EDIT: 私はカスタマイズしたユーザーのアドレスを実装するので、ユーザーはmysite.com/username
またはmysite.com/id123
のようなアドレスの2種類を有していてもよいので、ナビゲーションメニュー(My page
)から1つのリンクが動的です。私のような何かをしたい、私はdjango-sitetree
を使用したナビゲーションメニューの作成、場合:
from sitetree.sitetreeapp import register_items_hook
def my_items_processor(tree_items, tree_sender):
# get somehow `request`
if tree_sender == 'menu.children':
for item in tree_items:
if request.user.username:
item.url = request.user.username
else:
item.url = request.user.pk
return tree_items
は、要求応答サイクルにまだあなたの機能であり、つまりはあなただけでない、現在のリクエストがあります現在の範囲にアクセスできますか? – knbk
@knbk、上記の新しい情報を追加しました。私が理解するように、私の機能は要求応答サイクルから外れています。私は何らかの形で現在ログインしているユーザーのモデルを取得する必要があります。通常、私は '要求'からそれを得ることができます。私は '現在のユーザーを得る 'という方法を見つけることを試みたが運がなかった。 – TitanFighter
「現在ログインしているユーザー」という概念は、要求オブジェクトに直接結び付けられています。これが要求 - 応答サイクルの外にあり、要求が存在しない場合、ログインしていないユーザーが存在しないため、ログインしたユーザーにはアクセスできません。リクエスト・レスポンス・サイクルに入っていれば、何らかの方法でリクエストを関数に渡すことができるかもしれませんが、そうでない場合は、不運です。 – knbk