在Django表单中获取以前的表单填充数据

时间:2011-08-06 00:58:49

标签: django django-forms

我使用自定义模板来显示我的表单:

...
<td>Username</td>
<td><input id="id_username" type="text" maxlength="30" name="username" tabindex="1"></td>
...

如果我提交我的注册表单(例如)必填字段为空,则django刷新页面并显示错误。问题是其他领域(正确的)。它们被重置并且之前填充的数据被清除。如果不使用自定义方式显示字段,我使用{{ form.field }}它可以正常工作,如果表单中有错误,django会填充其他正确的字段。

我该如何解决这个问题?

1 个答案:

答案 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'}))