Vous n'êtes pas identifié(e).
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 [1]
has not been used correctly. For POST forms, you need to ensure:
*
Your browser is accepting cookies.
* The view function uses
RequestContext [2] 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 != 'mail _AT_ mail.com':
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
Hors ligne
Bonjour,
tu as oublié de forger ton token dans ta vue:
c.update(csrf(request))
https://docs.djangoproject.com/en/dev/ref/contrib/csrf/
Le 09/11/2012 13:46, Cornelis Michaël 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
> <http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ref-contrib-csrf>
> has not been used correctly. For POST forms, you need to ensure:
>
> * Your browser is accepting cookies.
> * The view function uses |RequestContext|
> <http://docs.djangoproject.com/en/dev/ref/templates/api/#subclassing-context-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 != 'mail _AT_ mail.com':
> 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: michael _AT_ cornelis.co
> ______________________________
> http://nut.lu | Raccourcisseur d'URL
>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
Hors ligne
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 <michael _AT_ cornelis.co> 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 != 'mail _AT_ mail.com':
> 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: michael _AT_ cornelis.co
> ______________________________
> http://nut.lu | Raccourcisseur d'URL
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
Hors ligne
Pfiouu!,
Merci à vous deux, j'utilise render maintenant.
J'ai un
peu de mal à me situer sur django, ce n'est que mon 2 ème jour de dev.
Le temps de s'y faire
Michaël
Le 2012-11-09 14:03, Xavier
Ordoquy a écrit :
> 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
[5])
>
> 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 [6]
>
> Cordialement,
> Xavier Ordoquy,
> Linovia.
>
> Le 9 nov. 2012
à 13:46, Cornelis Michaël <michael _AT_ cornelis.co> 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 [1] has not been used
correctly. For POST forms, you need to ensure:
>>
>> * Your browser is
accepting cookies.
>> * The view function uses RequestContext [2] 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 !=
'mail _AT_ mail.com':
>> 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: michael _AT_ cornelis.co
>>
______________________________
>> http://nut.lu [3] | Raccourcisseur
d'URL
>>
>> _______________________________________________
>> django
mailing list
>> django _AT_ lists.afpy.org
>>
http://lists.afpy.org/mailman/listinfo/django
>
>
_______________________________________________
> django mailing list
>
django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
[4]
Hors ligne