Bonjour,

Normalement il n'est pas nécessaire de forger le token explicitement quand on 
utilise le RequestContext.

Ton render_to_response ne contient pas l'argument context_instance et donc ton 
tag csrf_token ne sert à rien.
Pour voir comment faire, cf 
https://docs.djangoproject.com/en/1.4/topics/http/shortcuts/#render-to-response)

Pour éviter ce genre d'erreur, tu devrais préférer le raccourci render qui 
"offre" le contexte par défaut.
Pour plus d'information: 
https://docs.djangoproject.com/en/1.4/topics/http/shortcuts/#render

Cordialement,
Xavier Ordoquy,
Linovia.

Le 9 nov. 2012 à 13:46, Cornelis Michaël <[email protected]> a écrit :

> Bonjour à tous,
> 
>  
> Je met les mains dans le cambouis et voici mes premier problème.
> 
> Lorsque j'essaye d'envoyer mon form (pour tester les gestions des erreurs)
> 
> J'ai l'erreur suivante:
> 
> Forbidden (403)
> 
> CSRF verification failed. Request aborted.
> 
> Help
> 
> Reason given for failure:
> 
>     CSRF cookie not set.
>     
> In general, this can occur when there is a genuine Cross Site Request 
> Forgery, or when Django's CSRF mechanism has not been used correctly. For 
> POST forms, you need to ensure:
> 
> Your browser is accepting cookies.
> The view function uses RequestContext for the template, instead of Context.
> In the template, there is a {% csrf_token %} template tag inside each POST 
> form that targets an internal URL.
> If you are not using CsrfViewMiddleware, then you must use csrf_protect on 
> any views that use the csrf_token template tag, as well as those that accept 
> the POST data.
> You're seeing the help section of this page because you have DEBUG = True in 
> your Django settings file. Change that to False, and only the initial error 
> message will be displayed.
> 
> You can customize this page using the CSRF_FAILURE_VIEW setting.
> 
>  
> Voici ce que j'ai concernant le CSRF:
> 
> settings.py:
> 
> MIDDLEWARE_CLASSES = (
>     'django.middleware.csrf.CsrfViewMiddleware',
>     'django.middleware.common.CommonMiddleware',
>     'django.contrib.sessions.middleware.SessionMiddleware',
>     'django.contrib.auth.middleware.AuthenticationMiddleware',
>     'django.contrib.messages.middleware.MessageMiddleware',
>     # Uncomment the next line for simple clickjacking protection:
>     # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
> )
> 
>  
>  
> Mon template:
> 
> {% extends "base.html" %}
> {% block title %}Connexion{% endblock %}
> {% block bodyId %}loginPage{% endblock %}
> {% block content %}
> <form action="." method="POST">
> {% csrf_token %}
> {% if error %}
> <p class="error">{{ error }}</p>
> {% endif %}
>     <p>
>         <label for="email">Courriel:</label>
>         <input name="email" id="email" size="30" tpe="email" />
>     </p>
>     
>     <p>
>         <label for="password">Mot de passe:</label>
>         <input name="password" id="password" size="30" type="password" />
>     </p>
>     
>     <p>
>         <input type="submit" value="Se connecter"/>
>         <a href=""> Créer un compte</a>
>     </p>
> </form>
> {% endblock %}
> 
>  
> Ma vue:
> 
> # -*- coding: utf-8 -*-
> '''
> Created on 8 nov. 2012
> 
> @author: m.cornelis
> '''
> from django.shortcuts import render_to_response
> from django.http import HttpResponseRedirect
> from datetime import datetime
> 
> 
> 
> def welcome(request):
>     return render_to_response('welcome.html',
>                            {'current_date_time': datetime.now} ),
>                            
> def login(request):
>     #teste si le formulaire a été envoyé
>     if len(request.POST) >0:
>         # Teste si mes paramètres attendus ont été transmis
>         if 'email' not in request.POST or 'password' not in request.POST:
>             error = "Veuillez entrer votre adresse email et votre mot de 
> passe."
>             return render_to_response('login.html', {'error' : error})
>         else:
>             email = request.POST['email']
>             password = request.POST['password']
>             #teste si le mot de passe est le bon
>             if password != 'password' or email != '[email protected]':
>                 error = "Adresse email ou mot de passe erroné."
>                 return render_to_response('login.html', {'error': error})
>             #Tout est bon, on va a la page d'accueil (welcome)
>             else:
>                 return HttpResponseRedirect('/welcome')
>             #Le formulaire n'a pas été envoyé
>     else:
>         return render_to_response ('login.html')
>         
>    
> 
> Merci à vous :)
> 
>  
> -- 
> Michaël Cornelis
> 
> Rue Terne des vaches N°8
> 6460 Chimay
> 
> Gsm: +32 (0)475/ 517.866
> Fixe: +32 (0)60/ 779.010
> E-Mail: [email protected]
> ______________________________
> http://nut.lu  | Raccourcisseur d'URL
> 
> 
> _______________________________________________
> django mailing list
> [email protected]
> http://lists.afpy.org/mailman/listinfo/django

_______________________________________________
django mailing list
[email protected]
http://lists.afpy.org/mailman/listinfo/django

Répondre à