Django request.user.username不';行不通
嗨 Django模板系统有问题。当我想签入模板时,如果用户使用以下方式登录:Django request.user.username不';行不通,django,Django,嗨 Django模板系统有问题。当我想签入模板时,如果用户使用以下方式登录: {% if user.is_authenticated %} # success {% else %} <p>Welcome, new user. Please log in.</p> {% endif %} 它正确地显示了其他部分。 希望有人能帮助我。 谢谢Phil您是否将“用户”实例从视图传递到模板?您需要确保它与您传递到render_to_response()中的上下文相
{% if user.is_authenticated %}
# success
{% else %}
<p>Welcome, new user. Please log in.</p>
{% endif %}
它正确地显示了其他部分。
希望有人能帮助我。
谢谢Phil您是否将“用户”实例从视图传递到模板?您需要确保它与您传递到render_to_response()中的上下文相同,或者您选择用于将视图上下文呈现到模板中的任何呈现方法。您需要确保将“request.user”传递到呈现器中。或者更好地使用基于上下文的渲染:
return render_to_response('index.html',
my_data_dictionary,
context_instance=RequestContext(request))
context_实例将使用auth中间件上下文处理器在您的视图中设置“用户”。有一个处理上下文的示例,但简而言之 最好的方法是使用Django的auth上下文处理器。确保你还在里面。然后你需要使用 这将从本质上改变您的代码
from django.template import RequestContext
# ...
return render_to_response('index.html', {
'inhalt': 'Succesfully loged in'
}, RequestContext(request))
在python中,检索登录的用户对象。即定义一个函数获取当前用户 所以你的回答应该是这样的:
class Index(webapp.RequestHandler):
def get(self):
user= get_current_user()
templates.render(self, 'mypage.html', user=user)
然后在django模板上,您可以简单地执行以下操作:
{% if user %}
<p>Hallo user {{user.name}}</p>
{% else %}
<p>Welcome, new user. Please log in.</p>
{% endif %}
{%if用户%}
哈罗用户{{user.name}
{%else%}
欢迎新用户。请登录
{%endif%}
记住在settings.py中向模板添加'django.core.context\u processors.request'
例如:
# Context processors
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.static',
'django.core.context_processors.request',
'django.contrib.messages.context_processors.messages',
)
并添加RequestContext(请求):
+1与
{{request.user}
变量不同,默认情况下,{{user}}
变量可用。对于后者,必须启用django.core.context\u processors.request
。我发现这对于当前的Django版本更好,尽管也是正确的。
# Context processors
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.static',
'django.core.context_processors.request',
'django.contrib.messages.context_processors.messages',
)
# import
from django.template import RequestContext
# render
if not request.user.is_authenticated():
return render_to_response('index.html', {'inhalt': 'Not loggged in'})
else:
return render_to_response('index.html', {'inhalt': 'Succesfully logged in'}, RequestContext(request))