Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取Django表单中以前填写的表单数据_Django_Django Forms - Fatal编程技术网

获取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
如何自定义它?通过将它传递到widgets
attrs
字典。谢谢Daniel。这样就可以了,但是如果我想用HTML编写普通表单字段,有没有办法设置上一个值?那么为什么不能使用
form.field
?@Daniel Roseman,因为我需要使用
tabindex
属性作为示例。如果我使用
form.field
如何自定义它?通过将它传递到widgets
attrs
字典。谢谢Daniel。这样就可以了,但是如果我想用HTML编写普通表单字段,有没有办法设置上一个值?