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

django-在Django中选择文件后预览照片

在没有 django 表单的 django 模板上工作 [关闭]

在标题 Django 管理工具中隐藏 Django 徽标/名称

如何在 Django 之外使用 Django 模型?

如何在django系统外使用django的ORM