4

我有一些视图,它们都运行良好,并且都使用扩展一个基本模板的模板,该模板输出核心 HTML、页眉、页脚、导航等。幸福的家庭。

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

  1. 将会话数据添加到我作为上下文传递给视图中 HTML 模板的其余位(不确定这是否是一个好方法)

  2. 以某种方式从总是将上下文推送到正在处理的模板的视图中继承所有现有视图 - 这样我就不必担心将来我可能想添加到我的页面中的任何其他内容 - 这可能吗?

我对 django 很陌生,可能还有其他正确的方法 - 非常感谢您的所有建议。

4

1 回答 1

7

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

您可以自己编写或使用这个: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",
)
于 2011-03-12T23:42:22.963 回答