Django를 사용하여 사이트를 개발했으며 내 응용 프로그램에 포함 된 모델 중 하나를 기반으로 간단한 양식을 구현하려고합니다. 문제가 발생했지만 현재의 주요 문제는 CSRF 토큰이 누락되었거나 잘못되었습니다. 다음 오류가 계속 발생한다는 것입니다.Django csrf 토큰 누락 또는 잘못된 오류
저는 Python 2.7에서 Django 1.6을 실행하고 있습니다. 전달 기본적으로 -
Django: CSRF token missing or incorrect :
는 이미 (I 적절한에 상황에 맞는 참조를 제공하고 다양한 솔루션) 내 문제를 해결하려고 다음과 같은 글을 통해 보았다, 그러나 그것은 나를 위해 일하지 RequestContext
와 함께 render_to_response
반환합니다.
CSRF Token missing or incorrect은 - 나는 django.middleware.csrf.CsrfViewMiddleware
내 settings.py
파일에 나타나는 것을 확인했다하고 내가 설정 내 TEMPLATE_CONTEXT_PROCESSORS에 지시하지만, 변화가 없기 때문에 django.core.context_processors.csrf
을 추가하는 것을 시도했다.
> from django.conf import settings
> settings.TEMPLATE_CONTEXT_PROCESSORS
('django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug', 'django.core.context_processors.i18n',
'django.core.context_processors.media', 'django.core.context_processors.static',
'django.core.context_processors.tz',
'django.contrib.messages.context_processors.messages')
내가 내 settings.py 파일에 다음 코드를 배치하지만 난 403 CSRF 토큰 오류가 계속 : I 쉘에서 이러한 설정을 확인할 때, 나는 다음과 같은 출력을 얻을
import django.conf.global_settings as DEFAULT_SETTINGS
TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
'django.core.context_processors.csrf',
)
을
또한 오류 메시지 자체에서 제시 한 제안을 따라했습니다. 즉, Context 대신 RequestContext를 사용하여 {% csrf_token %} 태그를 제 위치에 두었습니다. 내 views.py 파일에서
:
from django.shortcuts import render
from django.views.decorators.csrf import csrf_protect, csrf_exempt
from django.template import loader, Context
from django.http import HttpResponse
from forms import StudentForm
from django.http import HttpResponseRedirect
from django.core.context_processors import csrf
from django.template import RequestContext
def edit(request):
form = StudentForm(request.POST or None)
if form.is_valid():
form.save()
return Redirect('/myprofile/')
return render(request, 'myprofile.html',{'form':form})
제발하지 내가 여러 가지 방법으로 RequestContext을 포함 것을 포함이 문제 해결에 여러 가지 다른 가이드를 읽고 있음 : 나를 위해 일한 어느 것도 return render_to_response('myprofile.html', RequestContext(request, {}))
및 return render_to_response('myprofile.html', RequestContext(request))
을, .
내 settings.py 파일 :
import django.conf.global_settings as DEFAULT_SETTINGS
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myprofile',
)
MIDDLEWARE_CLASSES = (
'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',
)
TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
'django.core.context_processors.csrf',
)
내 HTML 코드는 다음과 같다 :
<form action = "/myprofile/" method = "post"> {% csrf_token %}
<ul>
{{ form.as_ul }}
</ul>
<input type = "submit" name = "Submit" value = "Edit Form">
</form>
나는 또한 숨겨진 입력으로 토큰을 추가하는 시도하십시오하지 않는 것이
,하지만이있다 내 문제를 해결하지 못했습니다. 이 뷰를 생성하는 함수는 폼의 동작 인 <form action = "/myprofile/" ...>
과 동일한 함수이기도합니다.
이 문제에 대한 도움을 주시면 감사하겠습니다.
도움 주셔서 감사합니다. 귀하의 제안을 따랐지만 여전히 동일한 오류가 발생했습니다. 따라서이 문제는 파일 안의 원시 코드가 아닌 내 코드의 다른 측면에서 발생할 수 있다고 생각됩니다. – PyUnchained