获取Django表单中以前填写的表单数据
我使用自定义模板显示我的表单:获取Django表单中以前填写的表单数据,django,django-forms,Django,Django Forms,我使用自定义模板显示我的表单: ... <td>Username</td> <td><input id="id_username" type="text" maxlength="30" name="username" tabindex="1"></td> ... 。。。 用户名 ... 如果我提交注册表时(例如)必填字段为空,django将刷新页面并显示错误。问题在于其他字段(正确的字段)。它们被重置,先前填写的数据被清除。如果不是
...
<td>Username</td>
<td><input id="id_username" type="text" maxlength="30" name="username" tabindex="1"></td>
...
。。。
用户名
...
如果我提交注册表时(例如)必填字段为空,django将刷新页面并显示错误。问题在于其他字段(正确的字段)。它们被重置,先前填写的数据被清除。如果不是使用自定义方式显示字段,而是使用{{form.field}}
它工作正常,并且如果表单中有错误,django将填充其他正确的字段
如何解决这个问题?您可以尝试以下方法:
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'}))
您可以尝试以下方法:
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'}))
那么为什么不能使用form.field
?@Daniel Roseman因为我需要使用tabindex
属性作为例子。如果我使用form.field
如何自定义它?通过将它传递到widgetsattrs
字典。谢谢Daniel。这样就可以了,但是如果我想用HTML编写普通表单字段,有没有办法设置上一个值?那么为什么不能使用form.field
?@Daniel Roseman,因为我需要使用tabindex
属性作为示例。如果我使用form.field
如何自定义它?通过将它传递到widgetsattrs
字典。谢谢Daniel。这样就可以了,但是如果我想用HTML编写普通表单字段,有没有办法设置上一个值?