【问题标题】:Django: construct form without validating fields?Django:构造表单而不验证字段?
【发布时间】:2011-03-21 14:23:15
【问题描述】:

我有一个表单MyForm,当用户填写它时,我使用 ajax 对其进行更新。我有一个视图方法,它通过从request.POST 构造一个MyForm 并反馈它来更新表单。

def update_form(request):
    if request.method == 'POST':
        dict = {}
        dict['form'] = MyForm(request.POST).as_p()
        return HttpResponse(json.dumps(dict), mimetype='application/javascript')
    return HttpResponseBadRequest()

但是,这会调用清理/验证例程,我不想在用户真正主动单击“提交”之前向用户显示错误消息。

所以问题是:如何在不调用验证的情况下从现有数据构造django.forms.Form

【问题讨论】:

  • 什么?在用户点击提交之前,不能调用 POST 方法。你在说什么?您能否更具体按什么顺序看到您所看到的内容?

标签: python django validation forms django-forms


【解决方案1】:

在您调用 form.is_valid() 之前,永远不会调用验证。

但正如我猜测的那样,您希望您的表单填写用户输入的数据,直到用户点击提交。

def update_form(request):
    if request.method == 'POST':
        if not request.POST.get('submit'):
            dict = {}
            dict['form'] = MyForm(initial = dict(request.POST.items())).as_p()
            return HttpResponse(json.dumps(dict), mimetype='application/javascript')
        else:
            form = MyForm(request.POST)
            if form.is_valid():
                # Your Final Stuff
                pass
    return HttpResponseBadRequest()

快乐编码。

【讨论】:

  • 谢谢,"initial=" 的使用正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 2015-01-15
  • 1970-01-01
  • 2011-02-24
  • 2016-04-08
  • 1970-01-01
  • 2014-05-12
  • 1970-01-01
  • 2019-03-13
相关资源
最近更新 更多