2
저는 장고 1.11, Apache 2.2 및 mod_wsgi를 모두 사용하여 Python 2.7을 사용하는 웹 응용 프로그램을 만들고 있습니다. 내 페이지를 렌더링하는 데 문제가 있습니다. 전체 역 추적이입니다 예외 값 : context는 WSGIRequest가 아닌 dict이어야합니다.
Environment:
Request Method: GET
Request URL: http://website.com/~user/irtf/
Django Version: 1.11.1
Python Version: 2.7.13
Installed Applications:
['irtf.apps.IrtfConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'mod_wsgi.server']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "/home/path/irtf_website/mysiteenv/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner
41. response = get_response(request)
File "/home/path/irtf_website/mysiteenv/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/home/path/irtf_website/mysiteenv/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/path/irtf_website/mysite/irtf/views.py" in index
18. return HttpResponse(template.render(request))
File "/home/path/irtf_website/mysiteenv/lib/python2.7/site-packages/django/template/backends/django.py" in render
64. context = make_context(context, request, autoescape=self.backend.engine.autoescape)
File "/home/path/irtf_website/mysiteenv/lib/python2.7/site-packages/django/template/context.py" in make_context
287. raise TypeError('context must be a dict rather than %s.' % context.__class__.__name__)
Exception Type: TypeError at /irtf/
Exception Value: context must be a dict rather than WSGIRequest.
내
views.py입니다
def index(request):
template = loader.get_template('irtf/index.html')
return HttpResponse(template.render(request))
그것은 중요하지 않을 수도 있지만,이 페이지의 내 템플릿 그냥 텍스트와 링크로 구성되어 있습니다.
감사합니다 사용하려면 렌더링 지름길
으로이 혼합했다. 튜토리얼 페이지 (https://docs.djangoproject.com/en/1.11/intro/tutorial03/)의 HttpResponse는 dicts가 전달되지 않고 사용되기 때문에 혼란 스럽다. 설명서가 올바르지 않거나 내가보고 있지 않은 차이점이 있습니까? – Alexa
거기에 사전없이 사용되는 렌더링 바로 가기입니다. 어떤 곳에서는 다른'template.render'에서'render' 단축키를 사용했습니다. 비슷한 모양이지만 다른 행동을합니다. 튜토리얼은 틀리지 않지만 혼란 스럽습니다. – e4c5
여기에 오류가 발생하는 HttpResponse가 아니라 예외를 throw하는 Template.render 메서드입니다. [Template.render] (https://github.com/django/django/blob/master/django/template/backends/django.py#L58)의 메소드 서명은 컨텍스트와 요청이 키워드 인수로 지정되어야하며, 즉'template.render (request = request, context = context)'이거나 요청과 컨텍스트가 위치 인수, 즉'template.render (None, request)'로 제공되어야합니다. render에 대한 호출이 수정되면 HttpResponse에 유효한 첫 번째 인수 인 문자열을 반환합니다. – ARJMP