2017-02-18 14 views
0

ユーザー名とパスワードを入力する簡単なログイン画面があります。ユーザーが「ユーザー名」または「パスワード」をクリックすると、自動的にフィールドへのコントロール。例えば、Facebookのホームページのように。だから、Usernameテキストではなく、明らかにPasswordテキストのために働くこと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> 

:私の問題は、私は私がきちんと<inputタグを使用する必要があるのか​​分からないということです。各フィールドに適切なラベルを付けるにはどうすればよいですか?私はDjango Docs exampleを見ましたが、inputタグのvalue属性としてdjangoテンプレートタグを使用しようとすると、フィールドに生のhtmlしか表示されません。

編集:forms.pyファイル:

は、Djangoのインポートフォームからモデルから がLOGININFO

class LoginForms(forms.ModelForm): 

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

答えて

2

Facebookはランディングフォームのラベルを使用せず、プレースホルダを使用します。

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

詳細情報についてはwidgets documentationを見て:これは、あなたがDjangoのフォームでものを使用する方法です。

編集: forms.py は多少のようになります。あなたのコメントにあなたの質問に答える:

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

でしょう。この効果は私のモデルのすべてで?

いいえ、モデルにリンクされていないため、保存しても保存されません。

+0

これに感謝、私はちょうど質問があります。私はドキュメントを読んでいましたが、これを私のforms.pyファイルにどのように実装するのですか?これは私のモデルに全く影響を及ぼしますか? – Amon

+0

@Amon、あなたの質問に答えるために私の答えを編集しました。 – mxle

+0

さて、ありがとう、今私は私のモデルにリンクしている 'メタ'クラスを使用しているので、私は質問しています。私は現在、ドキュメントのようなモデルから私のフォームを作成しています:https://docs.djangoproject.com/en/1.10/topics/forms/modelforms/ – Amon

1

をインポート私はここでの問題が何であるかを知りません。これは助けることができる

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

希望:しかし、あなたは、このようなあなたのforms.pyにラベルを与えることができます。

+0

ちょっと問題は、代わりに

1

label_tag属性を使用すると、ラベルのHTMLが自動的に出力されます。

<p> 
{{ form.password.label_tag }} 
{{ form.password }} 
</p> 
関連する問題