Django - 在 render_to_response 中使用我的上下文
Posted
技术标签:
【中文标题】Django - 在 render_to_response 中使用我的上下文【英文标题】:Django - using my context in render_to_response 【发布时间】:2016-09-28 12:54:10 【问题描述】:有没有办法调用我所有的用户数据?不使用我视图中的所有模板变量
模板:
% csrf_token %
<h1>Welcome user.full_name user.last_name</h1>
<h1>user.email</h1>
所以在我看来,我会使用更少的代码,而不是声明所有的字典
观看次数
return render_to_response('user/userhome.html', user)
【问题讨论】:
在这里找到了我的答案***.com/questions/2246725/… 【参考方案1】:对于 django 1.8 或更高版本,您可以在模板中直接访问 user。但是,您可以在设置的 TEMPLATE_CONTEXT_PROCESSOR 中添加以下内容,以直接在模板中访问 user。
'django.contrib.auth.context_processors.auth',
【讨论】:
【参考方案2】:您可以使用定义__contains__
和__getitem__
的类dict 对象,但使用属性访问来设置属性,例如:
from django import shortcuts, template
from django.contrib.auth.decorators import login_required
class Page(dict):
# see http://***.com/questions/4984647/accessing-dict-keys-like-an-attribute-in-python
def __init__(self, *args, **kwargs):
super(Page, self).__init__(*args, **kwargs)
self.__dict__ = self
@login_required
def foo(request):
page = Page()
page.user = request.user
return shortcuts.render_to_response('foo.html', page)
然后您就可以完全按照您想要的方式编写模板。
【讨论】:
以上是关于Django - 在 render_to_response 中使用我的上下文的主要内容,如果未能解决你的问题,请参考以下文章
在没有 django 表单的 django 模板上工作 [关闭]