2017-12-23 5 views
1

Die Hauptfrage ist, ob es möglich ist, bestimmte Formularfelder an verschiedenen Stellen in Ihrer HTML-Vorlage beliebig zu spezifizieren. z.B. {{form.password}} Das scheint jedoch nicht zu funktionieren. (Ich schwöre, dass ich das irgendwo gesehen haben, aber ich kann es einfach nicht mehr finden Sie im Internet)Django-Formularfelder als Template-Variablen

Meine Ansicht für neue Benutzer anmelden aus UserCreationForm vererben und sieht irgendwie aus wie folgt aus:

Ansichten .py

def signup(request): 
if request.method == "POST": 
    form = UserCreationForm(request.POST) 
    if form.is_valid(): 
     form.save() 
     username = form.cleaned_data.get('username') 
     raw_password = form.cleaned_data.get('password1') 
     user = authenticate(username=username, password=raw_password) 
     login(request, user) 
     return redirect('home') 

else: 
    form = UserCreationForm() 
return render(request, 'core/authentication/registration_form.html', {'form': form}) 

es sendet dieses Formular direkt an die Vorlage registration_form.html, ist dies, wie ich wünschte, es hat funktioniert:

<form class="form" method="POST" action=""> 
    <div class="card-body"> 
     <div class="input-group form-group-no-border"> 
      <span class="input-group-addon"> 
       <i class="now-ui-icons users_circle-08"></i> 
      </span> 
      {{ form.first_name }} 
     </div> 
    </div> 

Dies ist, wie es tatsächlich funktioniert (f oder jetzt):

Das könnte eine dumme Frage sein, aber na ja, ich bin neugierig.

Vielen Dank im Voraus

+1

Es ist möglich, einzelne Felder zu definieren, Ihr erstes Beispiel ist korrekt. Und es ist besser, es so zu machen, das Feld nicht zu harcodieren. Sie erben von 'UserCreationForm' mit einem Formular mit dem gleichen Namen? Veröffentlichen Sie Ihren Formularcode. –

Antwort

3

Wenn ich Ihre Frage richtig verstanden habe, ist hier, wie django sagt, Sie manuell Felder django Form machen sollte.

{{ form.non_field_errors }} # here django renders errors which do not belong to any field 
<div> 
    {{ form.field_1.errors }} # here django renders errors which belong to field_1 
    {{ form.field_1.label_tag }} # label element 
    {{ form.field_1 }} # input element 
</div> 

# some html 

<div> 
    {{ form.field_2.errors }} 
    {{ form.field_2.label_tag }} 
    {{ form.field_2}} 
</div> 

Sie können diese here in der unteren Hälfte lesen.

Jedes Feld (jede Beschriftung, Eingabe, Fehlerelemente) kann mit benutzerdefinierten Klassen und Widgets gerendert werden.

+0

Oh ja, ich fühle mich im Moment unglaublich dumm haha. Frohe Weihnachten – Alien13

Verwandte Themen