Ошибка Django: render to response () получил неожиданный аргумент ключевого слова "экземпляр контекста"



после обновления до Django 1.10, я получаю ошибку render_to_response() got an unexpected keyword argument 'context_instance'.



мое мнение таково:



from django.shortcuts import render_to_response
from django.template import RequestContext

def my_view(request):
context = {'foo': 'bar'}
return render_to_response('my_template.html', context, context_instance=RequestContext(request))


вот полный traceback:



Traceback:

File "/Users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner
39. response = get_response(request)

File "/Users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)

File "/Users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/Users/alasdair/dev/rtr/rtr/urls.py" in my_view
26. return render_to_response('my_template.html', context, context_instance=RequestContext(request))

Exception Type: TypeError at /
Exception Value: render_to_response() got an unexpected keyword argument 'context_instance'
644   3  

3 ответов:

The на render_to_response был устарел в Django 1.8, и удалены в Django 1.10.

решение состоит в том, чтобы переключиться на render ярлык, который автоматически использует RequestContext.

обновить импорт и посмотреть следующим образом. Обратите внимание, что render принимает request объект в качестве первого аргумента.

from django.shortcuts import render

def my_view(request):
    context = {'foo': 'bar'}
    return render(request, 'my_template.html', context)

The render ярлык был введен в Django 1.3, поэтому это изменение совместимо со старыми версии Джанго.

в Django 1.8 совместим:

from django.shortcuts import render_to_response
from django.template import RequestContext

def my_view(request):
    context = {'foo': 'bar'}
    return render_to_response('my_template.html', {'context':context}, context_instance=RequestContext(request))

в Django 1.11

from django.shortcuts import render
from django.template import RequestContext

def my_view(request):
    context = {'foo': 'bar'}
    return render(request, 'my_template.html', context)

Django 2.0.7 python 3.5

in project/urls.py

handler404 = 'project.views.not_found'
handler500 = 'project.views.server_error'

in project/views.py

def not_found(request, exception=None):
response = render(request, '404.html', {})
response.status_code = 404
return response

def server_error(request, exception=None):
response = render(request, '500.html', {})
response.status_code = 500
return response

exception=None не передается, потому что в противном случае он бросает TypeError: server_error () отсутствует 1 обязательный позиционный аргумент:'exception'

Comments

    Ничего не найдено.