我正在写小社交申请.其中一个功能是在站点的标题中写入用户名.所以例如,如果我登录并且我的名字是Oleg(用户名),那么我应该看到:
你好,Oleg | 点击编辑个人资料
否则我应该看到类似的东西:
您好请注册或加入
我想要的是在我的网站的每个页面上显示这一点.显而易见的解决方案是将request.user对象传递到我站点的每个视图中.但是这里http://www.willmer.com/kb/category/django/ 我读到我可以从任何模板中访问请求对象,只需启用:
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.request',
)
Run Code Online (Sandbox Code Playgroud)
不知道为什么,但它实际上不起作用:(
也许有人可以帮助我并提出解决方案?
非常感谢,
奥列格
另请注意,如果不需要整个请求上下文,则应使用django.core.context_processors.auth而不是django.core.context_processors.request.然后你可以简单地输入:
Hello {{ user.get_full_name }}
Run Code Online (Sandbox Code Playgroud)
在你的模板中.
不要忘记context_instance=RequestContext(request)在打电话时通过render_to_response(或使用direct_to_template).
这里可能有两个问题.
首先,如果你重新定义TEMPLATE_CONTEXT_PROCESSORS,你将覆盖默认值,这可能不是一个好主意.默认情况下,该设置已包含auth处理器,user无论如何都会为您提供变量.如果你肯定也需要它request,你应该这样做(注意+=):
TEMPLATE_CONTEXT_PROCESSORS += (
'django.core.context_processors.request',
)
Run Code Online (Sandbox Code Playgroud)
其次,文件中所描述这里使用上下文处理器时,你需要确保你在你的模板中使用的RequestContext.如果你正在使用render_to_response你应该这样做:
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
638 次 |
| 最近记录: |