mirror of
https://github.com/django/django.git
synced 2025-08-02 10:02:41 +00:00

This change preserves backwards-compatibility for a very common misuse of render_to_response which even occurred in the official documentation. It fixes that misuse wherever it happened in the code base and docs. Context.__init__ is documented as accepting a dict and nothing else. Since Context is dict-like, Context(Context({})) could work to some extent. However, things get complicated with RequestContext and that gets in the way of refactoring the template engine. This is the real rationale for this change.
90 lines
2.5 KiB
Python
90 lines
2.5 KiB
Python
import os.path
|
|
|
|
from django.shortcuts import render_to_response, render
|
|
from django.template import Context, RequestContext
|
|
from django.utils._os import upath
|
|
|
|
|
|
dirs = (os.path.join(os.path.dirname(upath(__file__)), 'other_templates'),)
|
|
|
|
|
|
def render_to_response_view(request):
|
|
return render_to_response('shortcuts/render_test.html', {
|
|
'foo': 'FOO',
|
|
'bar': 'BAR',
|
|
})
|
|
|
|
|
|
def render_to_response_view_with_request_context(request):
|
|
return render_to_response('shortcuts/render_test.html', {
|
|
'foo': 'FOO',
|
|
'bar': 'BAR',
|
|
}, context_instance=RequestContext(request))
|
|
|
|
|
|
def render_to_response_view_with_content_type(request):
|
|
return render_to_response('shortcuts/render_test.html', {
|
|
'foo': 'FOO',
|
|
'bar': 'BAR',
|
|
}, content_type='application/x-rendertest')
|
|
|
|
|
|
def render_to_response_view_with_dirs(request):
|
|
return render_to_response('render_dirs_test.html', dirs=dirs)
|
|
|
|
|
|
def context_processor(request):
|
|
return {'bar': 'context processor output'}
|
|
|
|
|
|
def render_to_response_with_context_instance_misuse(request):
|
|
context_instance = RequestContext(request, {}, processors=[context_processor])
|
|
# Incorrect -- context_instance should be passed as a keyword argument.
|
|
return render_to_response('shortcuts/render_test.html', context_instance)
|
|
|
|
def render_view(request):
|
|
return render(request, 'shortcuts/render_test.html', {
|
|
'foo': 'FOO',
|
|
'bar': 'BAR',
|
|
})
|
|
|
|
|
|
def render_view_with_base_context(request):
|
|
return render(request, 'shortcuts/render_test.html', {
|
|
'foo': 'FOO',
|
|
'bar': 'BAR',
|
|
}, context_instance=Context())
|
|
|
|
|
|
def render_view_with_content_type(request):
|
|
return render(request, 'shortcuts/render_test.html', {
|
|
'foo': 'FOO',
|
|
'bar': 'BAR',
|
|
}, content_type='application/x-rendertest')
|
|
|
|
|
|
def render_with_dirs(request):
|
|
return render(request, 'render_dirs_test.html', dirs=dirs)
|
|
|
|
|
|
def render_view_with_status(request):
|
|
return render(request, 'shortcuts/render_test.html', {
|
|
'foo': 'FOO',
|
|
'bar': 'BAR',
|
|
}, status=403)
|
|
|
|
|
|
def render_view_with_current_app(request):
|
|
return render(request, 'shortcuts/render_test.html', {
|
|
'foo': 'FOO',
|
|
'bar': 'BAR',
|
|
}, current_app="foobar_app")
|
|
|
|
|
|
def render_view_with_current_app_conflict(request):
|
|
# This should fail because we don't passing both a current_app and
|
|
# context_instance:
|
|
return render(request, 'shortcuts/render_test.html', {
|
|
'foo': 'FOO',
|
|
'bar': 'BAR',
|
|
}, current_app="foobar_app", context_instance=RequestContext(request))
|