【问题标题】:validation error not seen in template form using form使用表单的模板表单中未出现验证错误
【发布时间】:2020-12-29 22:40:16
【问题描述】:

验证错误之前也没有显示,当我使用表单 api 创建表单时,我发送错误,但没有出现在 html 中,现在也当使用 UserCreationForm 创建用户时,现在在 html 中也没有出现错误,在没有填写单个字段的情况下提交此表单。

views.py 文件

from django.shortcuts import render
from .forms import signup
# Create your views here.
def sign_up(request):
    fm = signup()
    if request.method == 'POST':
        fm = signup(request.POST)
        if fm.is_valid() :
            print('until this runs')
            fm.save()
        else:
            fm = signup()
            print(fm.errors)
    return render(request, 'at/signup.html', {'form': fm})

forms.py 文件

from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm

class signup(UserCreationForm):
    class Meta:
        model=User
        fields=['username','first_name','last_name','email']

html文件

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
    <title>Form</title>
</head>
<body>
  <div class="container" >
        {{ form.non_field_errors }}
        <form method="post"  novalidate>
            {% csrf_token %}

           {{ fms.as_p }}
            <button class="text-center btn btn-primary" type="submit">SUB</button>

        </form>



  </div>

</body>




</html>

也试过这个 html 代码,但没有看到错误

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>user regisration</title>
</head>
<body>
{{ form.non_field_errors }}
{% if messages %}
<ul>
    {% for message in messages %}
       <li>{{ message }}</li>
    {% endfor %}
</ul>
{% endif %}
{{ form.non_field_errors }}
    <form action="" method='POST' novalidate>
    {% csrf_token %}

    {% for fm in form  %}
            {{fm.label_tag}} {{fm}} {{fm.errors|striptags}} <br> <br>
   {% endfor %}
    <input type="submit" value='submit'>
    </form>


</body>
</html>

【问题讨论】:

    标签: django django-models django-forms django-templates


    【解决方案1】:

    手动渲染字段时,您负责显示错误消息。

    https://docs.djangoproject.com/en/3.1/topics/forms/#rendering-form-error-messages

    【讨论】:

      猜你喜欢
      • 2021-03-07
      • 2021-02-11
      • 1970-01-01
      • 2020-07-25
      • 2020-07-21
      • 2021-04-10
      • 1970-01-01
      • 2021-09-05
      • 2019-01-30
      相关资源
      最近更新 更多