【问题标题】: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)
    

    然后您就可以完全按照您想要的方式编写模板。

    【讨论】:

      猜你喜欢
      • 2017-05-11
      • 1970-01-01
      • 2023-03-16
      • 2013-07-28
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 2012-03-01
      相关资源
      最近更新 更多