2016-06-08 14 views
1

Dank für das Lesen:/Formview mit get-Methode zeigt nicht die Form

Als ich die „get“ aus der Sicht, die Form Werke zu entfernen, aber wenn ich ihn wieder einsetzen, ist es nicht machen.

URL im Browser: http://127.0.0.1:8000/activate?tpr=1140277&idpr=42

URLs:

url(r'^activate', Activation_vw.as_view(), name='activate') 

VIEW:

class Activation_vw(FormView): 
    template_name = 'activate.html' 
    form_class = Activation_Form 
    success_url = '/dashboard/' 

    def get(self, request, *args, **kwargs): 
     tokenProspect_v = request.GET.get('tpr') 
     idProspect_v = request.GET.get('idpr') 

     USER = USERS.objects.filter(
      id=idProspect_v).values('id', 'email', 'token') 

     if int(tokenProspect_v) != int(USER[0]['token']): 
      message = "Check the URL" 
     else: 
      message = USER[0]['email'] 

     context = {'msg': message} 
     return self.render_to_response(context) 

    def form_valid(self, form): 
     # No code yet 
     return super(Activation, self).form_valid(form) 

FORM:

class Activation_Form(forms.Form): 
    email = forms.EmailField() 
    password = forms.CharField(widget=forms.PasswordInput()) 

TEMPLATE:

Hello, {{ msg }} 
<form action="" method="POST"> 
    {%csrf_token%} 
    {{ form.as_p }} 
    <button type="submit">Activate</button> 
</form> 

Alle von ihnen haben die Importe an der Spitze jeder Datei.

Die get Funktion einwandfrei funktioniert, empfange ich die tpr und die idpr aber die form nicht und aus diesem Grund die Form form_valid und die success_url nicht auch nicht arbeiten.

Ich vermute, etwas ist falsch in der Rückkehr von meinem get, aber kann nicht herausgefunden.

Antwort

0

Es ist, weil Ihr form ist nicht im Zusammenhang weitergegeben werden:

context = {'msg': message} 
return self.render_to_response(context) 

Sie get_context_data verwenden können, um den Kontext zu erhalten und zu aktualisieren, wie Sie gehen:

context = self.get_context_data(msg=message) 
return self.render_to_response(context) 

Dies wird der Anruf get_context_data aus der Super-Klasse und schließen Sie die form in den Kontext zusammen mit dem Hinzufügen der message.