django – 如何在不在所有视图中实际指定上下文的情况下将上下文传递给模板?

我有一些观点,它们都运行良好,并且都使用扩展一个基本模板的模板,输出核心 HTML,页眉,页脚,导航等.快乐的家庭.

现在,我想在页面上玩会话,因为你无法从模板中访问用户的会话信息而没有实际从视图中传递它(纠正我在哪里我错了)我有两个选择:

>将会话数据添加到我作为上下文传递给视图中HTML模板的其余位(不确定这是否是一个好方法)
>以某种方式继承视图中的所有现有视图,这些视图将始终将上下文推送到正在处理的模板 – 这样我就不必担心将来可能要添加到我的页面的任何其他内容 – 这可能吗?

我对django很新,可能还有其他正确的做法 – 所有的建议都非常感谢.

我认为在上下文处理器中添加是一种非常简单的方法.

你可以自己编写也可以使用这个:
DJANGO.CORE.CONTEXT_PROCESSORS.REQUEST

http://docs.djangoproject.com/en/dev/ref/templates/api/#django-core-context-processors-request

然后,您将在模板中获得请求,并可以使用request.session进入会话

如果你这样做,请确保将视图中的RequestContext传递给模板,如下所示:

from django.template import RequestContext
def some_view(request):
    # ...
    return render_to_response('my_template.html',
                          my_data_dictionary,
                          context_instance=RequestContext(request))

还要修改settings.py以在上下文处理器中添加

TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
    "django.core.context_processors.request",
)
相关文章
相关标签/搜索