質問

AUTH_PROFILE_MODULE

{{request.user}} を使用してDjangoテンプレートのユーザーにアクセスできますが、プロファイルは user関数を介してのみアクセスできるため、どのようにプロファイルのフィールドにアクセスしますか。 get_profile()

毎回明示的にプロファイルをテンプレートに渡すことが本当に必要ですか?

役に立ちましたか?

解決

{{request.user.get_profile.whatever}} を使用します。 Djangoのテンプレート言語は、呼び出し可能なもの(この場合は .get_profile()メソッド)を自動的に呼び出します。

他のヒント

なぜ私にとって違うのかわかりませんが、{{request.user}}ではなく{{user}}を使用する必要があります。

はい、テンプレートからプロファイルにアクセスすることは可能です    request.user.get_profile

ただし、小さな注意事項があります。すべてのユーザーがプロファイルを持つわけではありません。これは、私の場合は管理ユーザーの場合でした。直接電話する    このような場合、テンプレートの {{request.user.get_profile.whatever}} によりエラーが発生します。

すべてのユーザーが常にプロファイルを持っていることが確実な場合は、テンプレートから呼び出すのが安全です。そうでない場合は、ビューのtry-exceptブロック内から get_profile()を呼び出してテンプレートに渡します。

Djangoを使用している場合> 1.5 get_profile は使用できなくなりました。

レガシーアプリがある場合は、 settings.py から AUTH_PROFILE_MODULE = 'myapp.profile' を削除する必要があります。

Profileクラスで models.OneToOneField(User)を使用する場合、単純に使用できます

{{ request.user.profile.whatever }}

Djangoテンプレート内

だれにも役立つ場合は、テンプレートで以下を使用しました:

ユーザー名: {{user.username}}

ユーザーの氏名: {{user.get_full_name}}

ユーザーグループ: {{user.groups.all.0}}

メール: {{user.email}}

開始セッション: {{user.last_login}}

サンプルの結果は次のとおりです。

  

ユーザー:監査人エツィオ

     

ユーザーグループ:auditGroup

     

ユーザー名:testUser03

     

メール:testuser03@auditor.com

     

セッションは2018年4月16日午後9時38分に開始されました

ありがとう:)

作業中!

プロファイルモデルでrelated_nameを指定します

user = models.OneToOneField(AUTH_USER_MODEL, related_name="user_profile", on_delete=models.CASCADE)

テンプレートを使用します。ここで、company_nameはプロファイルテーブルのフィールドです

{{ request.user.user_profile.company_name }}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top