2017-02-18 2 views
0

Ich habe einen einfachen Anmeldebildschirm mit einem Benutzernamen und einem Passwort. Ich möchte jedes Feld so beschriften, dass ein Benutzer auf "Benutzername" oder "Passwort" klicken würde Kontrolle auf das Feld. Wie zum Beispiel die Facebook-Homepage. Mein Problem ist, dass ich weiß nicht, wie ich richtig die <input Tags verwenden sollte:Ordnungsgemäße Kennzeichnung mehrerer Formularfelder mit Django

<form action="/login/" method='post'> 
    <label for='username_info'> Username </label> 
    {% csrf_token %} 
    {{ form.username }} 
    <p> 
    <label for="password_info"> Password </label> 
    {{ form.password }} 
    <p> 
    <input id='username_info' type='submit'> 
</form> 

, so dass für den Username Text funktioniert, aber nicht für den Password Text offensichtlich. Wie beschrifte ich jedes Feld richtig? Ich schaute auf die Django Docs example, aber wenn ich versuche, eine Django Vorlage Tag als value Attribut für die input Tag verwenden, zeigt es nur die Raw HTML in das Feld.

edit: forms.py Datei:

von django import Formen von Modellen importieren Logininfo

class LoginForms(forms.ModelForm): 

    class Meta: 
     model = LoginInfo 
     fields = ('username', 'password') 

Antwort

2

Facebook verwendet im Landungsformular keine Labels, sie verwenden Platzhalter. Dies ist, wie man ein mit django Formulare verwenden:

q = forms.CharField(label='username', 
       widget=forms.TextInput(attrs={'placeholder': 'Username'})) 

Für weitere Informationen auf der widgets documentation aussehen.

Edit: beantworten Ihre Frage in den Kommentar, Ihre forms.py wird wie folgt aussehen etwas:

class LoginForm(forms.Form): 
    username = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Username'})) 
    password = forms.CharField(widget=forms.PasswordInput) 

dieser Effekt meine Modelle überhaupt?

Nein, es würde nicht einmal, wenn Sie es speichern, weil es nicht mit einem Modell verknüpft ist.

+0

danke dafür habe ich nur eine Frage. Ich habe die Dokumente gelesen. Wie würde ich das in meine forms.py-Datei implementieren? Würde dies meine Modelle überhaupt beeinflussen? – Amon

+0

@Amon, bearbeitet meine Antwort, um Ihre Fragen zu beantworten. – mxle

+0

Okay, danke, im Moment benutze ich eine Meta-Klasse, die auf meine Modelle verweist, deshalb stelle ich die Frage. Ich erstelle derzeit meine Formulare aus Modellen wie es in der Dokumentation sagt: https://docs.djangoproject.com/de/1.10/topics/forms/modelforms/ – Amon

1

Ich weiß nicht, was das Problem hier ist. Aber Sie können Etiketten geben in Ihrem forms.py wie folgt aus:

username = forms.CharField(label='Username', max_length = 100) 
password = forms.CharField(label='Password', max_length = 100) 

Hope this helfen könnte.

+0

Hey das Problem ist, dass ich das

1

Verwenden Sie das Attribut label_tag, das automatisch den HTML-Code für das Label ausgibt.

<p> 
{{ form.password.label_tag }} 
{{ form.password }} 
</p> 
Verwandte Themen