2017-02-21 6 views
1

Ich habe versucht alles, was ich aus den Foren sammeln kann, brauche immer noch Hilfe: Ich bekomme immer die CSRF token missing or incorrect Fehler, wenn ich ein Formular einreichen. Früher funktionierte es gut und dann habe ich einige Änderungen vorgenommen und jetzt kann ich nicht mehr zurück. Ich benutze {% csrf_token %} und RequestContext. Ich habe versucht mit reverse, ich überprüfte die Middleware für die csrf middleware, versuchte den Server neu gestartet, versuchte mit HttpResponse anstelle von HttpResponseRedirect und template.render(), versuchte einen URL-Pfad anstelle der {% URL%} -Tag. In anderen Teilen meines Projekts verwende ich nicht einmal RequestContext und es funktioniert gut ..csrf Fehler mit csrf und Anfrage Kontext

signup_page.html:

<p>Sign Up Below 
</p> 
    <form action={% url 'signup_page' %} method="post"> 
    {% csrf_token %} 

    .... 

    Email 
    <input type="email" name="email" required="true"><br><br> 

    <input type="submit" value="POST"> 

</form> 

views.py

def signup_page(request): 
    template = loader.get_template('user_app/signup_page.html') 

    if request.method == "POST": 
     ... 
     email = request.POST['email'] 
     kwargs = { 
      'username':username, 'password':password, 'first_name':first_name, 
      'last_name':last_name, 'email':email 
     } 
     new_user = User.objects.create(**kwargs) 
     new_user.save() 

     context = { 
      'text':"POST", 'first_name':first_name 
     } 

     return HttpResponseRedirect(render('signup_page', context, context_instance =RequestContext(request))) 
    else: 
     return HttpResponse(template.render(RequestContext(request))) 

urls.py:

from django.conf.urls import url 
from user_app.views import signup_page, profile 

urlpatterns = [ 
    url(r'^signup', signup_page, name="signup_page"), 
    url(r'^profile', profile, name="profile") 
] 
+0

zeigen urls.py Datei –

+0

aktualisiert mit urls.py – ratrace123

+0

es etwas sein könnte, wie wenn ich einen Benutzer erstellen als irgendwie django Auto Protokolle mich in? Und so bin ich bereits eingeloggt und versuche einen neuen Benutzer zu erstellen? – ratrace123

Antwort

0
from django.shortcuts import render 

#create your views here 
def your_function(request): 
    #do whatever you want here... 
    context = {'any_data': 'you_want_to_send'} 
    return render(request,'your.html',context) 
+0

ok das funktioniert aus irgendeinem Grund, aber ich habe keine Ahnung, warum ... wissen Sie, warum die HttpResponse nicht funktioniert? – ratrace123

+0

@ratrace123, ja, weil das Rendern selbst eine httpresponse ist, wickeln Sie ein Antwortobjekt in ein anderes Antwortobjekt. Deshalb wird das csrf-Token im Frontend versteckt. Es wäre schön, wenn Sie die Antwort akzeptieren würden. –

+0

das funktioniert sogar, wenn ich den '@ csrf_protect' Dekorator entferne .. es ist, als ob die HttpResponse gerade nicht mit' csrf' arbeitet. – ratrace123