gpt4 book ai didi

django:为什么 RequestContext 设置为 context_instance?

转载 作者:行者123 更新时间:2023-12-04 00:46:42 26 4
gpt4 key购买 nike

似乎大多数文档都建议:

template_values = {}
template_values["foo"] = "bar"
return render_to_response(path, template_values, context_instance=RequestContext(request)

为什么我不使用:
template_values = RequestContext(request)
template_values["foo"] = "bar"
return render_to_response(path, template_values)

最佳答案

RequestContext 不继承自 dict ,因此不能保证实现 dict 的所有方法(它也没有),并且任何对 dict 进行操作的函数也可能无法工作。最后,没有理由这样做;最好将其视为其实现可能会更改的不透明对象。使用 dict 提供模板的上下文具有 RequestContext 的所有优点,但没有任何缺点。

更新

为了生成更少的样板代码,这里有两个我使用的实用函数。我将它们放在我项目底部的一个shortcuts.py 文件中。

from django.template import RequestContext
def render_template(request, template, data=None):
"Wrapper around render_to_response that fills in context_instance for you."
response = render_to_response(template, data,
context_instance=RequestContext(request))
return response

def boilerplate_render(template):
"Factory function for creating simple views that only forward to a template"
def view(request, **kwargs):
response = render_template(request, template, kwargs)
return response
return view

用法:
def my_view(request):
# Do stuff here...
return render_template(request, 'my_template.html', {'var1': 'value', etc..})

my_view2 = boilerplate_render('my_template2.html') # Takes no context parameters

关于django:为什么 RequestContext 设置为 context_instance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1215801/

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