我是Django新手。我正在构建一个使用django-authentication模块的django项目。
所以我使用LoginForm为任何用户登录生成上下文变量{{form.username}}和{{form.password}}。但为了使用户体验更好,我有类似
的东西 <td><input type="text" name="username" id="" size="30" value="" class='loginput'/></td>
而不是简单的
<td>{{ form.username }}</td>
如何使用输入标签但仍使用django-authentication后端表单?我也明白,对于任何其他形式我都可以使用小部件,形式媒体。我无法解决这个问题。
感谢。
答案 0 :(得分:4)
为什么这会增强可用性?唯一的区别是您添加了class
,并且由于某种原因已删除 id
属性,因此无法使用label
。我无法看到任何不太容易获取的东西会使用户体验变得更好。并且删除Django表单的动态能力,以便在验证失败的情况下重新显示错误的值,同样似乎不是一步。
当然,更好的方法是简单地将LoginForm子类化并在那里添加HTML类:
class LoginForm(auth.forms.AuthenticationForm):
username = forms.CharField(label=_("Username"), max_length=30,
widget=forms.TextInput(attrs={'class': 'loginput'}))
并将此表单在额外的上下文中传递给登录URL:
(r'^accounts/login/$', 'django.contrib.auth.views.login',
{'template_name': 'myapp/login.html', 'authentication_form': LoginForm}),