从django模板获取用户信息的最佳方法是什么?
例如,如果我只想:
我正在使用django-registration / authentication
答案 0 :(得分:61)
当前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()
&amp;模板中的user.get_username
。首选直接引用username
属性。 Source django.contrib.auth.context_processors.auth
默认启用&amp;包含变量user django.core.context_processors.request
模板上下文处理器。来源:https://docs.djangoproject.com/en/dev/topics/auth/default/#authentication-data-in-templates
答案 1 :(得分:37)
{% if request.user.is_authenticated %}Welcome '{{ request.user.username }}'
{% else %}<a href="{% url django.contrib.auth.login %}">Login</a>{% endif %}
并确保您在request
中安装了settings.py
模板上下文处理器:
TEMPLATE_CONTEXT_PROCESSORS = (
...
'django.core.context_processors.request',
...
)
答案 2 :(得分:6)
根据问题标题,以下内容可能对某人有用。在我的模板中使用了以下内容:
用户名:const navigationOptions = ({ navigation }) => ({
headerLeft: <Icon name={'arrow-left'} //<== Vector Icon Here
onPress={ () => { navigation.goBack() }} />
const RootStack = StackNavigator(
RouteConfigs,
//... StackNavigatorConfigs,
navigationOptions
)
用户全名:{{ user.username }}
用户组:{{ user.get_full_name }}
电子邮件:{{ user.groups.all.0 }}
会议开始于:{{ user.email }}
谢谢:)
答案 3 :(得分:0)
首先,首先,如果您的字段更改了名称,则必须以这种方式覆盖函数(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/
中的方法