我使用自定义模板来显示我的表单:
...
<td>Username</td>
<td><input id="id_username" type="text" maxlength="30" name="username" tabindex="1"></td>
...
如果我提交我的注册表单(例如)必填字段为空,则django刷新页面并显示错误。问题是其他领域(正确的)。它们被重置并且之前填充的数据被清除。如果不使用自定义方式显示字段,我使用{{ form.field }}
它可以正常工作,如果表单中有错误,django会填充其他正确的字段。
我该如何解决这个问题?
答案 0 :(得分:1)
你可以试试这个:
forms.py
class LoginForm(forms.Form):
username = forms.CharField(max_length = 30)
password = forms.CharField(max_length = 30,
widget = forms.PasswordInput(render_value = False))
views.py
def form_post(request):
if request.method == "POST":
form = LoginForm(request.POST)
c = {}
template = "myloginform.html"
if form.is_valid():
# ... do stuff
else:
# Add the data you want to preserve here
c['username'] = form.username
# ...
return render_to_response(template, c)
模板myloginform.html
...
<input id="id_username" type="text" maxlength="30"
name="username" tabindex="1" value="{{ username }}" />
...
编辑:
要将其添加到Daniel上面提到的attrs dict中,请使用:
uname = forms.CharField(max_length=20, widget=forms.TextInput(attrs={'tabindex':'1', 'class': 'myclass'}))