2017-02-08 4 views
1

Hallo, ich bin Benutzer Python und Django.Verboten (403) CSRF-Überprüfung fehlgeschlagen. Anfrage abgebrochen mit Django

ich werde diese question(Can I have a Django form without Model) folgen, aber für meine Aufgabe brauche ich Bilder. Ich werde versuchen, meinen Code auszuführen, und ich habe diesen Fehler verboten (403): eine Idee, wie das zu beheben?

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

In Ihrer Sicht übergeben Sie beim Rendern Ihrer Vorlage 'RequestContext' als Schlüsselwortargument. 'return render_to_response ('blog/calc.html', {'form': form}, kontext_instance = RequestContext (request))' – anupsabraham

+1

Irgendein besonderer Grund für die Verwendung von 'render_to_response ('blog/calc.html', {'form': form}, RequestContext (request)) 'und nicht nur' render (Anfrage, 'blog/calc.html', {'form': form} '? –

+0

die' render (Anfrage, 'blog/calc.html', { 'form': form}) 'nicht funktionieren, ich nehme diesen Fehler' ValueError: Die Ansicht blog.views.form_handle hat kein HttpResponse-Objekt zurückgegeben. Stattdessen wurde None zurückgegeben – Mar

Antwort

0

Sie sind ein csrf Token zum Formular hinzufügen, aber nicht in der Ansicht Funktion. Versuchen Sie dies:

from django.views.decorators.csrf import csrf_protect 

# Create your views here. 
@csrf_protect 
def form_handle(request): 
    form = MyForm() 
    ... 
Verwandte Themen