Django CSRF échec de la vérification. Demande abandonnée.- CSRF cookie pas ensemble
Je sais que cette question a été posée avant. J'ai essayé presque toutes les options fournies par les gens, mais je n'arrive pas à le résoudre. Je suis un débutant complet, de sorte s'il vous plaît laissez-moi savoir où je vais mal.
Je suis en train d'écrire une simple forme brute. Je n'ai pas mis en place de l'authentification ou le mécanisme de session jusqu'à maintenant (mais de ce que j'ai lu qui n'a pas d'importance à ce problème. Corrigez-moi si je me trompe).
Lorsque j'essaie d'envoyer mon formulaire, j'obtiens cette erreur:
Forbidden (403)
CSRF verification failed. Request aborted.
Reason given for failure:
CSRF cookie not set.
C'est mon code:
Mon Views.py a cette méthode:
def submit(request):
global alphabet_array
dishes = Dish.objects.all().order_by('name')
if request.method == "POST":
print request.POST['restaurant']
print request.POST['rating']
render_to_response('index.html', {}, context_instance=RequestContext(request))
else:
render_to_response('index.html', {}, context_instance=RequestContext(request))
Beaucoup ont dit que l'utilisation de RequestContext résout ce problème, mais pour moi même qui ne fonctionne pas.
Le modèle semble comme ci-dessous:
<form role="form" action="/submit/" method="post">{% csrf_token %}
<div class="form-group">
<label for="">Restaurant Name</label>
<input type="text" name="restaurant" class="form-control" id="">
</div>
<div class="form-group">
<label for="">Rating</label>
<select class="form-control" name="rating">
<option>--</option>
<option>1 (very bad)</option>
<option>2 (bad)</option>
<option>3 (average)</option>
<option>4 (good)</option>
<option>5 (excellent)</option>
</select>
</div>
<button type="submit" class="btn btn-primary btn-block"><i class="fa fa-check-circle"></i> Save</button>
</form>
La middleware_classes dans settings.py ressemble:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
django.middleware.csrf.CsrfViewMiddleware est là et il est au-dessous de 'django.contrib.les sessions.middleware.SessionMiddleware'
Mon url.py est a des entrées:
url(r'^admin/', include(admin.site.urls)),
url(r'^index/$', 'testapp.views.index'),
url(r'^starts_with/(?P<alphabet>.+)/dish/(?P<dish_id>\d+)/$', 'testapp.views.alphabet_dish'),
url(r'^starts_with/(?P<alphabet>.+)/$', 'testapp.views.alphabet'),
url(r'^submit/$', 'testapp.views.submit'),
Je ne suis pas vraiment sûr de ce qui est le problème ici. Comme je l'ai dit, j'ai lu des postes similaires ici et essayé tout ce qui est mentionné dans les réponses. Qu'ai-je manqué? Mon navigateur est google Chrome, et c'est d'accepter les cookies.
Sans le décorateur, le cookie n'est pas présent. Quand j'ajoute un décorateur, je peux voir un cookie arriver généré. Mais alors, il jette une autre erreur: Le point de vue testapp.les vues.soumettre n'ai pas le retour d'un objet HttpResponse.
OriginalL'auteur rishi | 2014-02-01
Vous devez vous connecter pour publier un commentaire.
Votre CSRF le programme d'installation est très bien. Le problème est vous n'êtes pas retourner le résultat. Rappelez-vous que la vue est une fonction. Vous devez
return render_to_response(...)
pas juste de l'appeler (qui est aussi pourquoi, en supprimant CSRF vous avez obtenu ledidn't return an HttpResponse
erreur)Autre que cela, vous faites quelques choses générales qui sont django-précisément tort:
Donc:
Comment sur pour la classe de base point de vue?
OriginalL'auteur yuvi