gpt4 book ai didi

django - 如何将上下文传递给模板而不在所有 View 中实际指定它?

转载 作者:行者123 更新时间:2023-12-05 00:04:49 25 4
gpt4 key购买 nike

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

现在,我想在页面上玩 session ,并且由于您无法从模板访问用户的 session 信息,而无需从 View 中实际传递它(纠正我的错误)我有两个选择:

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

  • 我对 Django 很陌生,可能还有其他适当的方法可以做到这一点 - 非常感谢您的所有建议。

    最佳答案

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

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

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

    然后您将在模板中收到请求,并且可以使用 request.session 进入 session

    如果这样做,请确保将 View 中的 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",
    )

    关于django - 如何将上下文传递给模板而不在所有 View 中实际指定它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5286336/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com