2017-02-08 17 views
1

привет я пользователь python и Django.Запрещено (403) Сбой проверки CSRF. Запрос отменен с использованием django

i последует за этим question(Can I have a Django form without Model) , но для моей задачи мне нужны изображения. Я попытаюсь запустить мой код, и у меня есть эта ошибка. Запрещено (403): любая идея, как это исправить?

Forbidden (403) 
CSRF verification failed. Request aborted. 
You are seeing this message because this site requires a CSRF cookie when submitting forms. This cookie is required for security reasons, to ensure that your browser is not being hijacked by third parties. 
If you have configured your browser to disable cookies, please re-enable them, at least for this site, or for 'same-origin' requests. 

views.py

from django.shortcuts import render 
from django.shortcuts import render_to_response 
from django.template import RequestContext 
from blog.forms import MyForm 

# Create your views here. 
def form_handle(request): 
    form = MyForm() 
    if request.method=='POST': 
     form = MyForm(request.POST) 
     if form.is_valid(): 
      cd = form.cleaned_data 
      #now in the object cd, you have the form as a dictionary. 
      a = cd.get('a') 
    return render_to_response('blog/calc.html', {'form': form}, RequestContext(request)) 

urls.py

from django.conf.urls import url 
from . import views 

forms.py

from django import forms 

class MyForm(forms.Form): #Note that it is not inheriting from forms.ModelForm 
    a = forms.ImageField() 
    #All my attributes here 

urls.py

urlpatterns = [ 
url(r'^$',views.form_handle, name='form_handle'), 

] 

HTML

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
</head> 
<body> 
<form action="" method="POST">{% csrf_token %} 
    {{form.as_p}} 
    <button type="submit">Submit</button> 
</form> 
</body> 
</html> 
+0

На ваш взгляд, при визуализации вашего шаблона передайте 'RequestContext' в качестве аргумента ключевого слова. 'return render_to_response ('blog/calc.html', {'form': form}, context_instance = RequestContext (запрос))' – anupsabraham

+1

Любые конкретные причины использования 'render_to_response ('blog/calc.html', {'form': form}, RequestContext (request)) ', а не только' render (request, 'blog/calc.html', {'form': form} '? –

+0

' render (request, 'blog/calc.html', { 'form': form}) 'not work Я принимаю эту ошибку' ValueError: view blog.views.form_handle не возвращал объект HttpResponse. Вместо этого он возвращал None, – Mar

ответ

0

Вы добавляете маркер CSRF к форме, но не обеспечивает его функции зрения. Попробуйте следующее:

from django.views.decorators.csrf import csrf_protect 

# Create your views here. 
@csrf_protect 
def form_handle(request): 
    form = MyForm() 
    ... 
Смежные вопросы