【问题标题】:Get previous form filled data in Django forms在 Django 表单中获取以前的表单填充数据
【发布时间】:2011-10-21 07:14:06
【问题描述】:

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

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

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

我该如何解决这个问题?

【问题讨论】:

  • 那你为什么不能使用form.field
  • @Daniel Roseman 因为我需要使用 tabindex 属性,例如。如果我使用form.field,我该如何自定义?
  • 通过将其传递到小部件attrs 字典中。
  • 谢谢丹尼尔。这样就可以了,但是如果我想用 HTML 写普通的表单字段,有没有办法设置以前的值?

标签: django django-forms


【解决方案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 字典中,请使用:
uname = forms.CharField(max_length=20, widget=forms.TextInput(attrs={'tabindex':'1', 'class': 'myclass'}))

【讨论】:

    猜你喜欢
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 2018-09-06
    • 2020-02-07
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    相关资源
    最近更新 更多