我有一个简单的登录界面,其中包含用户名和密码输入,我想标记每个字段,以便用户点击“用户名”和“用户名”。或者&#39;密码&#39;它会自动将控件切换到字段。比如Facebook主页就好了。我的问题是我不知道应该如何正确使用<input
标签:
<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>
因此,这适用于Username
文本,但不适用于Password
文本。如何正确标记每个字段?我查看了Django Docs example但是当我尝试将django模板标记用作value
标记的input
属性时,它只显示字段中的原始html。
编辑:forms.py文件:
来自django导入表单 从模型导入LoginInfo
class LoginForms(forms.ModelForm):
class Meta:
model = LoginInfo
fields = ('username', 'password')
答案 0 :(得分:2)
Facebook并没有在登陆表单中使用标签,他们使用占位符。这就是你使用django形式的方法:
q = forms.CharField(label='username',
widget=forms.TextInput(attrs={'placeholder': 'Username'}))
有关详细信息,请查看widgets documentation。
编辑:在评论中回答您的问题, forms.py 看起来会像这样:
class LoginForm(forms.Form):
username = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Username'}))
password = forms.CharField(widget=forms.PasswordInput)
这会影响我的模特吗?
不,即使你保存它也不会,因为它没有链接到任何模型。
答案 1 :(得分:1)
我不知道这里有什么问题。但您可以在 forms.py 中添加标签,如下所示:
username = forms.CharField(label='Username', max_length = 100)
password = forms.CharField(label='Password', max_length = 100)
希望这可以提供帮助。
答案 2 :(得分:1)
使用label_tag
属性,该属性将自动输出标签的HTML。
<p>
{{ form.password.label_tag }}
{{ form.password }}
</p>