【问题标题】:Django: Prevent form fields being cleared when invalid data enteredDjango:防止输入无效数据时清除表单字段
【发布时间】:2010-12-03 14:57:24
【问题描述】:

我有以下表格,允许用户提交文件和电子邮件地址。

from django import forms
from django.utils.translation import gettext_lazy as _
from django.core.validators import validate_email

class UploadFileForm(forms.Form):
    email = forms.EmailField()
    file = forms.FileField()

class EmailField(forms.CharField):
    default_error_messages = {
        'invalid': _(u'Enter a valid e-mail address.'),
    }
    default_validators = [validate_email]

这是视图:

def upload_file(request):

    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            email = form.cleaned_data['email']
            handle_uploaded_file(email, request.FILES['file'])
            return HttpResponseRedirect('/thanks')
    else:
        form = UploadFileForm()
    return render_to_response('upload_file.html', {'form': form},   
        context_instance=RequestContext(request))

如果用户使用无效电子邮件提交表单,则表单将显示给用户,但字段会被清除。防止清除表单字段的正确方法是什么?

【问题讨论】:

  • 不清除字段是 django 的默认行为。我使用您的视图和表单代码设置了一个虚拟项目......在错误后显示给用户的表单没有清除字段,因此您发布的所有内容似乎都可以在 django 的股票安装中正常工作1.2.
  • 但是使用上面的方法确实为我清除了它们。我正在使用 Django 1.2.1。什么可能导致我的而不是你的?

标签: django django-forms


【解决方案1】:

愚蠢的错误。更新了我的模板以包含表单值。现在一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    相关资源
    最近更新 更多