【问题标题】:Forms.ValidationError Not Working, Django,Forms.ValidationError 不工作,Django,
【发布时间】:2020-05-02 18:27:17
【问题描述】:

从 django 导入表单 从 django.core 导入验证器

class FormName(forms.Form):
    name = forms.CharField()
    email = forms.EmailField()
    verify_email = forms.EmailField(label = "enter your email Again")
    text  = forms.CharField(widget = forms.Textarea)

    def clean(self):
        all_clean_data = super().clean()
        email = all_clean_data['email']
        vmail = all_clean_data['verify_email']

        if email != vmail:
            raise forms.ValidationError("Error i Email matching")

views.py

from django.shortcuts import render
from . import form

# Create your views here.

def index(request):
    return render(request,'basicapp/index.html')


def form_name_view(request):
    forms = form.FormName()

    if request.method == "POST":
        formObject  = form.FormName(request.POST)

        if formObject.is_valid():
            print("Sucess!!!!!")
            print(formObject.cleaned_data['name'])
            print(formObject.cleaned_data['email'])
            print(formObject.cleaned_data['text'])



    return render(request,'basicapp/form_page.html',{'form':forms})

form_page.html

<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Forms</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
  </head>
  <body>
    <div class = "container">
      <h1>Fill out the form</h1>
      <form method="POST">
        {{form.as_p}}
        {% csrf_token %}
        <input type="submit" class="btn btn-primary" value = "Submit">
      </form>
    </div>
  </body>
</html>

我不确定我错过了什么,

我已经做了所有的事情并且做了足够的研究,但是找不到解决方案。

我是否因为 django 的版本控制而遗漏了什么。

我正在学习一门 udemy 课程,但没有得到回应,那就是我在这里发帖。

提前致谢

【问题讨论】:

  • 你的clean()方法在执行过程中被调用了吗?
  • @ArakkalAbu 是的,我用打印检查过。它的工作两封电子邮件不匹配,但模板中没有验证错误
  • views.py 中返回渲染方法有什么问题吗,

标签: python django django-templates


【解决方案1】:

问题在于您的观点,您没有正确呈现表单对象。 试试这个,

def form_name_view(request):
    if request.method == "POST":
        formObject = form.FormName(request.POST)

        if formObject.is_valid():
            print("Sucess!!!!!")
            # do some redirection
    else:
        # if a GET (or any other method) we'll create a blank form
        formObject = form.FormName()
    return render(request, 'basicapp/form_page.html', {'form': formObject})

【讨论】:

    猜你喜欢
    • 2019-09-03
    • 2020-02-11
    • 1970-01-01
    • 2012-06-07
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 2015-01-11
    相关资源
    最近更新 更多