为什么我的 Django 表单没有引发任何错误?

涂博之

我有一个简单的表单,每当用户在表单上做错时,我都想在 Django 上引发验证错误。问题是我设置了表单验证,但是当表单以错误的值提交时,它会通过。我想知道为什么会发生这种情况以及如何避免这种情况?

这是html表单:

<form id="ask-project" method="post" action="{% url 'ask-project' %}">
  {% csrf_token %}

  <input required="required" class="form-control form-text required" id="prenom" name="prenom" type="text">

  <button class="btn btn-default submit">Submit</button>
</form>

视图.py:

def askProject(request):
    if request.method == 'POST':
        form = AskProjectForm(request.POST)
        if form.is_valid():
            save_it = form.save(commit=False)
            save_it.save()
            return redirect('/merci/') #success

表格.py:

class AskProjectForm(forms.ModelForm):
    class Meta:
        model = AskProject
        fields = ['prenom']

    def clean_prenom(self):
        prenom = self.cleaned_data['prenom']
        if len(prenom) < 3:
            raise ValidationError('Votre prénom doit etre plus long que 1 caractère.')
        return prenom

难道我做错了什么?

e4c5

对于您正在使用的模式,这类问题是不可避免的,也是日常的事情。第一件事是不要像您所做的那样手动呈现表单。这意味着当用户输入无效数据时,您不会显示任何反馈。考虑使用{{ form }}{{ form.as_table }}等,或渲染的所有信息字段说明如下:https://docs.djangoproject.com/en/1.11/topics/forms/#rendering-fields-manually

第二个问题是您在提交表单时重定向,无论它是否有效。推荐的模式是仅在表单有效时重定向。因此,即使您应用了第一段中的建议,您仍然没有得到所需的反馈。考虑实施手册中建议的表格。直接复制过去如下

if request.method == 'POST':
    # create a form instance and populate it with data from the request:
    form = NameForm(request.POST)
    # check whether it's valid:
    if form.is_valid():
        # process the data in form.cleaned_data as required
        # ...
        # redirect to a new URL:
        return HttpResponseRedirect('/thanks/')

# if a GET (or any other method) we'll create a blank form
else:
    form = NameForm()

return render(request, 'name.html', {'form': form})

最后了解为什么您的表单验证不起作用的具体情况,在您的 clean 方法中添加一个打印语句来打印出字符串和它的长度,看看它是否符合(或者您的方法是否被调用)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么Django中没有“ ListField”?

来自分类Dev

为什么我的代码没有引发EntityExistsException

来自分类Dev

Django:为什么我的图像字段表单无法验证?

来自分类Dev

为什么我的相框没有任何显示?

来自分类Dev

为什么我的Django表单会一直说“必填”

来自分类Dev

为什么我的路线没有任何动作

来自分类Dev

为什么我的jqgrid没有显示任何数据?

来自分类Dev

为什么我的Django表单两次执行?

来自分类Dev

为什么我的Django项目中不断出现此“名称'Model'未定义”错误?

来自分类Dev

为什么我的Django表单没有引发验证错误?

来自分类Dev

为什么要添加基本模板破坏我的Django表单

来自分类Dev

Django + celery-为什么我的定期任务没有运行?

来自分类Dev

为什么我在Django中收到表单无效错误?

来自分类Dev

为什么我的模型没有显示在django管理站点中?

来自分类Dev

我为什么得到“ ValueError:没有为任何变量提供渐变:['Variable:0']。” 错误?

来自分类Dev

为什么我的Visual Studio自动关闭而没有任何错误

来自分类Dev

为什么我们在Django中的表单上使用cleaned_data

来自分类Dev

为什么我的Django网站出现网络错误?

来自分类Dev

为什么我的代码没有任何输出?

来自分类Dev

Django:为什么我的提交兴趣表没有提交。我写错了我的观点或模板吗?

来自分类Dev

如果我没有在nil上执行代码,为什么Rails会引发错误

来自分类Dev

即使没有返回任何字段,为什么我也会出现“私人访问”错误?

来自分类Dev

为什么我的Django静态文件的末尾有数字

来自分类Dev

当我向django添加新语言时,没有错误,但没有显示我的翻译。为什么?

来自分类Dev

为什么我的Django表单显示选择不可用错误?

来自分类Dev

为什么我在Django中收到m2m_field / __str__错误?

来自分类Dev

Django:为什么我的表单发送 POST 数据但返回 request.method GET?

来自分类Dev

为什么我面对的是空图而没有任何错误?

来自分类Dev

为什么我的 Fastcomet Django 网站中没有加载 css?

Related 相关文章

  1. 1

    为什么Django中没有“ ListField”?

  2. 2

    为什么我的代码没有引发EntityExistsException

  3. 3

    Django:为什么我的图像字段表单无法验证?

  4. 4

    为什么我的相框没有任何显示?

  5. 5

    为什么我的Django表单会一直说“必填”

  6. 6

    为什么我的路线没有任何动作

  7. 7

    为什么我的jqgrid没有显示任何数据?

  8. 8

    为什么我的Django表单两次执行?

  9. 9

    为什么我的Django项目中不断出现此“名称'Model'未定义”错误?

  10. 10

    为什么我的Django表单没有引发验证错误?

  11. 11

    为什么要添加基本模板破坏我的Django表单

  12. 12

    Django + celery-为什么我的定期任务没有运行?

  13. 13

    为什么我在Django中收到表单无效错误?

  14. 14

    为什么我的模型没有显示在django管理站点中?

  15. 15

    我为什么得到“ ValueError:没有为任何变量提供渐变:['Variable:0']。” 错误?

  16. 16

    为什么我的Visual Studio自动关闭而没有任何错误

  17. 17

    为什么我们在Django中的表单上使用cleaned_data

  18. 18

    为什么我的Django网站出现网络错误?

  19. 19

    为什么我的代码没有任何输出?

  20. 20

    Django:为什么我的提交兴趣表没有提交。我写错了我的观点或模板吗?

  21. 21

    如果我没有在nil上执行代码,为什么Rails会引发错误

  22. 22

    即使没有返回任何字段,为什么我也会出现“私人访问”错误?

  23. 23

    为什么我的Django静态文件的末尾有数字

  24. 24

    当我向django添加新语言时,没有错误,但没有显示我的翻译。为什么?

  25. 25

    为什么我的Django表单显示选择不可用错误?

  26. 26

    为什么我在Django中收到m2m_field / __str__错误?

  27. 27

    Django:为什么我的表单发送 POST 数据但返回 request.method GET?

  28. 28

    为什么我面对的是空图而没有任何错误?

  29. 29

    为什么我的 Fastcomet Django 网站中没有加载 css?

热门标签

归档