tam*_*are 14 django django-views
根据上面的链接,context_instance参数定义为
用于呈现模板的上下文实例.默认情况下,模板将使用RequestContext实例呈现(填充来自请求和字典的值).
考虑到这个定义,我没有看到任何可以从提供context_instance参数中受益的场景.我的意思是如果我需要提供额外的上下文值,我只需将它们添加到字典参数中.我不知道context_instance如何有用.请教育我.谢谢.
jro*_*jro 12
主要方案是在模板中提供某些变量.例如,auth上下文处理器(以及其他)user可以在模板中使用变量,这样您就不必自己传递它.虽然它是一个相当大的段落,但Django文档在解释它方面做得相当不错.
简而言之:通过添加context_instance=RequestContext(request)到您的render调用中,您settings.py(在TEMPLATE_CONTEXT_PROCESSORS变量下)中定义的所有处理器都按顺序执行.这些处理器中的每一个都返回dict带有模板中可用变量的变量.使用默认设置,这意味着你不必添加例如user,csrf或者messages自己变量:这是由处理器来完成.
自己的上下文处理器的一个示例是将主菜单参数添加到模板.假设您要突出显示用户正在查看的当前类别的菜单:通过创建自己的上下文处理器来确定当前位置,它可以在模板中添加一些变量,这些变量由菜单用于突出显示.
现在,Django 1.8中不推荐使用Context实例,并且已将字典重命名为context.
在Django 1.8中更改:
上下文参数曾被称为字典.该名称在Django 1.8中已弃用,将在Django 2.0中删除.自1.8版以来
不推荐使用:不推荐使用context_instance参数.只需使用上下文.
因此,如果您使用的是更新版本的Django,则对Render函数的调用应为:
from django.shortcuts import render
def my_view(request):
# View code here...
return render(request, 'myapp/index.html', {"foo": "bar"},
content_type="application/xhtml+xml")
Run Code Online (Sandbox Code Playgroud)
{"foo": "bar"}你的背景在哪里?缺少的context_instance是(我推测)现在默认创建并填充了您的请求所需的上下文.