我理解Django 1.8中的内容已经改变了render_to_response 接受争论。我有很多观点,到处都使用这种模式:
...返回render_to_response(模板,上下文, context_instance = MyRequestContext(请求))
MyRequestContext扩展了RequestContext并添加了我在模板中总是使用的一些参数。
现在这已不再适用,并且模板中不再可以访问MyRequestContext中的值。
那么如何在Django 1.8中使用RequestContext?我需要他们+一些上下文传递给我的所有模板。
/ J
- 编辑 -
感谢您的所有答案,正如您指出这应该有效 ...
我最终重写并替换了我之前的RequestContext子类 - > MyRequestContext w。执行单独的ContextProcessors函数并将其添加到我的OPTIONS:context_processors列表中,然后在我的所有视图中使用正常的RequestContext(请求)。不知道我在旧解决方案中遇到了什么错误/问题,但现在可行。再次 - 感谢您的灵感和回应。
答案 0 :(得分:0)
您可以手动获取模板并将其呈现给HttpResponse
对象:
from django.template.loader import get_template
from django.http import HttpResponse
template = get_template(template_name)
context = MyRequestContext(request, context_dict)
return HttpResponse(template.render(context))
答案 1 :(得分:0)
我也碰到了这个问题,不得不多次阅读render_to_response上的文档。
让我感到困惑的是示例代码与弃用警告的结合:
return render_to_response('my_template.html',
my_context,
context_instance=RequestContext(request))
自1.8版以来不推荐使用:context_instance参数是 弃用。只需使用上下文。
请注意,context_instance
仍然在文档中的许多示例中使用,可以直接使用它直到Django 2.我不想等到我被迫改变当我升级时...
我将my_context dict从render_to_response中移出到RequestContext类中。我相信这一定是新风格:
return render_to_response('template.html',
context=RequestContext(request, my_context))
上下文是第二个参数,所以你甚至不必命名它:
return render_to_response('template.html',
RequestContext(request, my_context))