2016-05-23 7 views
0

Ich bin auf einem Web-Service arbeiten django und Python, ich habe ein Problem mit CSRF-Token haben, das ist mein HTML-Code:Django Sitzungen Variablen

  {% for f in resultat %} 
        <div class="box"> 


         <BR> 
         <div class="row uniform 50%"> 
          <div class="6u 12u(mobilep)"> 
           {{ f.typeposte }} 
          </div> 
         </div> 
         <BR> 
         <div class="row uniform 50%"> 
          <div class="6u 12u(mobilep)"> 
           {{ f.diplome }} 
          </div> 
         </div> 
         <BR> 
         <div class="row uniform 50%"> 
          <div class="6u 12u(mobilep)"> 
           {{ f.niveau }} 
          </div> 
         </div> 
         <BR> 
         <div class="row uniform 50%"> 
          <div class="6u 12u(mobilep)"> 
           {{ f.duree }} 
          </div> 
         </div> 
         <BR> 
         <div class="row uniform 50%"> 
          <div class="6u 12u(mobilep)"> 
           {{ f.commentaire }} 
          </div> 
         </div> 
       <div class="box"> 
       <form class="form_app" action="/apply" method="post"> 
       {% csrf_token %} 
       <div class="row uniform 50%"> 
        <div class="6u 12u(mobilep)"> 
         {{form_app.apply}} 
        </div> 
        <input type="hidden" name="title" value="ouf"> 
       </div> 
       <div class="row uniform"> 
        <div class="12u"> 
         <ul class="actions align-center"> 
          <li><input type="submit" value="OK"/></li> 
         </ul> 
        </div> 
       </div> 
       </form> 
      </div> 

und ich hatte eine Funktion wie folgt aus:

Ich möchte die 'Phasen' anzeigen und wenn der Klient auf 'Je postule' klickt und dann auf OK, zeigt er eine HTML Seite an, wo der Klient sein Motivationsschreiben schreiben kann, also das Problem ist wenn er klickt OK, es zeigt mir einen Fehler an: Forbidden (403) CSRF-Überprüfung fehlgeschlagen. Anfrage abgebrochen.

Ich verstehe havent warum, so haw kann ich tun, oder es eine andere Lösung, um die ID der Bühne zu bekommen, ohne variable Sitzungen mit

die erste Ansicht ist:

def get_stage_by_motcle(request): 
    user=request.user 
    if user and user.is_active: 
     if request.method == 'POST': 
      form = Form_resultat(request.POST) 
      if form.is_valid(): 
       m = form.cleaned_data["mot"] 
       mtc=motcle(motcle=m) 
       mtc.save() 
       query=motcle.objects.all().filter(motcle=mtc) 
       queryset=eStage.objects.all().filter(mot=query) 
       form_app = Form_apply() 
       return render_to_response('resultat_by_mot.html', {'resultat': queryset,'form_app':form_app}) 
      else: 
       form = Form_resultat(request.POST) 
       return render(request, 'get_by_mot.html', {'form': form}) 
     else: 
      form = Form_resultat(request.POST) 
      return render(request,'get_by_mot.html',{'form': form}) 
    else: 
     return redirect('/home') 

seine eine Funktion, die Zeigen Sie das Attribut jeder Stufe an, ich möchte die ID jeder Stufe wiederherstellen, um sie in der Funktion 'Anwenden' zu verwenden.

+0

Die von Ihnen freigegebene Funktion ist nicht die Ansicht, die unter HTML-Code gerendert wird, oder Sie haben die vollständige Ansicht nicht hinzugefügt. Etwas fehlt. Bitte fügen Sie Ihre vollständige Ansicht ein, um die zugehörige HTML-Datei darzustellen. – alix

+0

oh yeah Ich aktualisiere es jetzt :) – sarra

Antwort

0

OK. Habe deinen Code nicht getestet. Aber sieht aus, als ob Sie mit diesem csrf Fehler konfrontiert werden, weil Sie Form_apply Formular nach der Behandlung Form_resultat Formular in same view senden und gleich request. Da ich Ihren Code nicht getestet habe, bin ich mir über diese Lösung nicht sicher. Aber es lohnt sich, um zu versuchen:

eine andere URL erstellen:

# other urls... 
url(r'^form-apply/(?P<mtc_id>[0-9]+)', 'form_apply_view', name='form_apply_view'), 

Und schaffen damit verbundene Ansicht:

def form_apply_view(request, mtc_id): 
    query=motcle.objects.all().filter(pk=mtc_id) 
    queryset=eStage.objects.all().filter(mot=query) 
    form_app = Form_apply() 
    return render_to_response('resultat_by_mot.html', {'resultat': queryset,'form_app':form_app}) 

Und Ihre neue get_stage_by_moctle Ansicht kann wie:

def get_stage_by_motcle(request): 
    user=request.user 
    if user and user.is_active: 
     if request.method == 'POST': 
      form = Form_resultat(request.POST) 
      if form.is_valid(): 
       m = form.cleaned_data["mot"] 
       mtc=motcle(motcle=m) 
       mtc.save() 
       # redirect to your new url to render new form with saved object data... 
       return redirect('form_apply_view', mtc_id=mtc.id) 
      else: 
       form = Form_resultat(request.POST) 
       return render(request, 'get_by_mot.html', {'form': form}) 
     else: 
      form = Form_resultat(request.POST) 
      return render(request,'get_by_mot.html',{'form': form}) 
    else: 
     return redirect('/home') 

Ich habe außerdem in deinem Code nichts falsches gesehen. Also versuchen Sie diesen Ansatz und lassen Sie mich wissen, ob es funktioniert.

Verwandte Themen