【问题标题】:Django - using my context in render_to_responseDjango - 在 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)
【问题讨论】:
标签:
python
django
django-templates
django-views
【解决方案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://stackoverflow.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)
然后您就可以完全按照您想要的方式编写模板。