IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Django et userena : corriger l'erreur CSRF token missing or incorrect.


Sujet :

Django Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Django et userena : corriger l'erreur CSRF token missing or incorrect.
    Bonjour

    Je cherche à intégrer userena dans un projet django.
    En première étape je souhaite faire un bouton permettant de créer utilisateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
              <form class="form-signin" method='post'>
              	{% csrf_token %}
                <h4 class="form-signin-heading">New on Mapcake? Sign up for free</h4>
                <input type="text" class="input-block-level" placeholder="Full name">
                <input type="text" class="input-block-level" placeholder="Email">
                <input type="password" class="input-block-level" placeholder="Password">
                <!--This button must redirect to a registration page with the content of the fields if the user tipe somme fileds-->
                <button class="btn .btn-mini btn-info" name="signin" type="submit">Sign up for Mapcake</button>
              </form>
    Le code behind en python:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    def source_index(request): 
            if ("signin" in request.POST):
                return userena.views.signin()
    Mon explorateur utilise bien les cookies. D'autre part, j'ai tenté d'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return userena.views.signup(request)
    pour forcer le passage du contexte (qui devrait contenir le token).

    Merci d'avance pour votre aide

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 6
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par c.rollet Voir le message
    Bonjour

    Je cherche à intégrer userena dans un projet django.
    En première étape je souhaite faire un bouton permettant de créer utilisateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
              <form class="form-signin" method='post'>
              	{% csrf_token %}
                <h4 class="form-signin-heading">New on Mapcake? Sign up for free</h4>
                <input type="text" class="input-block-level" placeholder="Full name">
                <input type="text" class="input-block-level" placeholder="Email">
                <input type="password" class="input-block-level" placeholder="Password">
                <!--This button must redirect to a registration page with the content of the fields if the user tipe somme fileds-->
                <button class="btn .btn-mini btn-info" name="signin" type="submit">Sign up for Mapcake</button>
              </form>
    Le code behind en python:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    def source_index(request): 
            if ("signin" in request.POST):
                return userena.views.signin()
    Mon explorateur utilise bien les cookies. D'autre part, j'ai tenté d'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return userena.views.signup(request)
    pour forcer le passage du contexte (qui devrait contenir le token).

    Merci d'avance pour votre aide
    Je ne comprends pas très bien ta démarche. Le formulaire est déjà prévu dans les vues de userena. Aussi il te suffit d'afficher la vue de userena:

    Pour ce faire, tu peux peut être utiliser des requêtes XMLHttp

    En javascript;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    webmaster= moi;
    xhr = new XMLHttpRequest();
            		xhr.open('POST', 'userena.signin');
    		        //Don't forget to add the csrftoken protection in the header
    		        xhr.setRequestHeader("X-CSRFToken",'{{csrf_token}}');
    		        //Prepare data to send if needed
    		        var data = new FormData();
    		            data.append('username', webmaster);
    		        //Send data
    		        xhr.send(data);
    		        //Verify if the sended data have been computed by the server
    		        xhr.onreadystatechange=function(){
    				if (xhr.readyState==4 && xhr.status==200){
    					//Do what you want like display the result
                                            result = xhr.responseText;
    		       		        $('#mydiv').html(result);
    			    }
    Sinon une autre methode plus brutale peut être d'afficher tes formulaires userena dans des iframe locaux que tu peux ensuite customiser à ta guise:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    {% if user.is_authenticated %}
        			<p style="color:#FFFFFF; font-family:'Poiret One'; font-size:80%;font-weight:bold;">Welcome, {{ user.username }}. Thanks for logging in.</p>
        			<iframe class="wikiframe" src="http://127.0.0.1:8000/accountxy/{{ user.username }}/" name="myFrame" id="myFrame" scrolling="auto" height="45%" frameborder="0" >
    		     	</iframe>
    		    <!--<iframe class="wikiframe" src="http://127.0.0.1:8000/accountxy/signout/" name="myFrame" id="myFrame" scrolling="auto" height="45%" frameborder="0" ></iframe>
    		    -->
    			{% else %}
    				{% include 'accountxy/signin/' %}
        		<p style="color:#FFFFFF;">Welcome, new user. Please log in.</p>
    		     	<iframe class="wikiframe" src="http://127.0.0.1:8000/accountxy/signin/" name="myFrame" id="myFrame" scrolling="auto" height="45%" frameborder="0" >
    		     	</iframe>
    		    <iframe class="wikiframe" src="http://127.0.0.1:8000/accountxy/signup/" name="myFrame" id="myFrame" scrolling="auto" height="45%" frameborder="0" ></iframe>
    		    {% endif %}

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Bonjour

    Mon idée était d'utiliser le code python pour afficher le formulaire userena de connexion.
    J'ai essayé de passer par ce que tu propose (appeler le formulaire de connexion en javascript si j'ai bien saisi). Mais j'obtiens toujours la même réponse...

    Je ne vois toujours pas pourquoi le crsf token ne passe pas.

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/10/2012, 16h01
  2. [1.x] csrf token required : erreur dans le modèle ?
    Par cli16 dans le forum Symfony
    Réponses: 3
    Dernier message: 27/04/2010, 13h43
  3. Corriger des erreurs de disque dur
    Par garfieldcut dans le forum Administration système
    Réponses: 3
    Dernier message: 29/05/2006, 10h28
  4. aider à corriger une erreur de php
    Par LeYouss dans le forum Langage
    Réponses: 3
    Dernier message: 27/04/2006, 18h04
  5. [Configuration] besoin d'aides impossible de corriger les erreurs :(:((:
    Par moonia dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 11
    Dernier message: 27/03/2006, 10h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo