Djangoテンプレートからユーザー情報を取得する最良の方法は何ですか?
たとえば、単にしたい場合:
Djangoの登録/認証を使用しています
現在のDjangoバージョンの代替方法:
_{% if user.is_authenticated %}
<p>Welcome, {{ user.get_username }}. Thanks for logging in.</p>
{% else %}
<p>Welcome, new user. Please log in.</p>
{% endif %}
_
注意:
request.user.get_username()
を使用し、テンプレートでは_user.get_username
_を使用します。 username
属性を直接参照するよりも優先されます。 ソースDjango.contrib.auth.context_processors.auth
_はデフォルトで有効になっており、変数userが含まれていますDjango.core.context_processors.request
_テンプレートコンテキストプロセッサを有効にする必要はありません。ソース: https://docs.djangoproject.com/en/dev/topics/auth/default/#authentication-data-in-templates
{% if request.user.is_authenticated %}Welcome '{{ request.user.username }}'
{% else %}<a href="{% url Django.contrib.auth.login %}">Login</a>{% endif %}
settings.py
にrequest
テンプレートコンテキストプロセッサがインストールされていることを確認してください:
TEMPLATE_CONTEXT_PROCESSORS = (
...
'Django.core.context_processors.request',
...
)
質問のタイトルごとに、次のことが役に立つ場合があります。私のテンプレートで次のものを使用しました:
ユーザー名:{{ user.username }}
ユーザーの氏名:{{ user.get_full_name }}
ユーザーグループ:{{ user.groups.all.0 }}
メール:{{ user.email }}
セッション開始時:{{ user.last_login }}
ありがとう:)
まず、フィールドの名前が変更された場合、次のように関数(get_full_name()、get_short_name()など)を上書きする必要があります。
def get_full_name(self):
return self.names + ' ' + self.lastnames
def get_short_name(self):
return self.names
テンプレートでは、このように表示できます
{% if user.is_authenticated %}
<strong>{{ user.get_short_name }}</strong>
{% endif %}
これらは認証の方法です https://docs.djangoproject.com/es/2.1/topics/auth/customizing/