Django не отображает Validationerror

#python #django #validation #display #validationerror

#python #django #проверка #отобразить #ошибка проверки

Вопрос:

У меня проблема с ошибкой в кодировании django, не отображающей ошибку проверки Я не знаю, почему django не отображает validationerror. Не могли бы вы, пожалуйста, помочь.

Вот мой form.py файл это мой файл формы, где у меня есть форма и проверка.

 django import forms
from django.core import validators
from new_app.models import Names``
from django.shortcuts import render
from django.http import HttpResponse



class Forms(forms.ModelForm):


FirstName = forms.CharField(label='FirstName',widget=forms.TextInput(attrs={"placeholder":"your Name","rows":20,"column":100}))

    class Meta():
        model = Names
        fields = '__all__'

    def clean(self):

        all_data = super().clean()
        firstname= all_data['FirstName']
        lastname = all_data['LastName']
        a = 1
        if firstname in lastname:
                raise forms.ValidationError("amazing")
        return all_data
  

Вот мой view.py файл
это мой файл просмотра

 from django.shortcuts import render
from new_app.models import Names
from new_app import formss
from django import forms

# Create your views here.
def index(request):
    a = Names.objects.all()
    dict = {'write':a}
return render(request , 'index.html', context = dict)
  

регистр def (запрос):

 second = formss.Forms()


if request.method == 'POST':
    form = formss.Forms(request.POST)

    if form.is_valid():
        form.save(commit=True)
        return index(request)
    else:
        second = formss.Forms()






return render (request , 'forms.html', context = {'form':second} )
  

Вот мой form.html файл шаблона …

   <!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">

    <title>Login or Sign up</title>
  </head>
  <body>
    
    <div class="container">
      <div class="jumbotron">
        <h1>         Sign up</h1>
      </div>

    </div>

    <div class="container">


      <div class="first">
        <form class="form-horizontal" method="post">
          {{form.as_p}}

          {% csrf_token%}
          <input type="submit" class="btn btn-primary" value="Submit">
        </form>


      </div>
    </div>

  </body>
</html>
  

Ответ №1:

Вам нужно добавить теги ошибок в шаблон, чтобы увидеть ошибки проверки:

 {% if form.errors %}
       {% for field in form %}
              {% for error in field.errors %}
                    <div class="alert alert-danger">
                          <strong>{{ error }}</strong>
                    </div>
              {% endfor %}
       {% endfor %}
       {% for error in form.non_field_errors %}
              <div class="alert alert-danger">
                    <strong>{{ error }}</strong>
              </div>
       {% endfor %}
{% endif %}
  

Вам также необходимо убедиться, что отображается исходная заполненная форма, чтобы отобразить ошибки.

 def register(request):
    if request.method == 'GET':
        form = formss.Forms()

    if request.method == 'POST':
        form = formss.Forms(request.POST)

        if form.is_valid():
            form.save(commit=True)
            return index(request)

    return render (request , 'forms.html', context = {'form':form} )
  

Комментарии:

1. Большое вам спасибо …. Так я могу получить ошибку из файла формы напрямую в html?

2. Когда вы загружаете форму в шаблон, она проверяет наличие errors атрибутов в шаблоне, и если они у нее есть, она их загрузит. form.is_valid() Будет генерировать ошибки, если он не проходит проверку. Когда вы загружаете форму обратно в шаблон в post, в случае сбоя она отобразит ошибки вместе с ней.

3. Я получаю множественную ошибку, одну из bootsrap, а другую из простой ошибки проверки django? как получить bootsrap только один раз. И как конкретно получать ошибки. Например, если я хочу показать конкретную ошибку для определенного поля и для определенного типа ошибки

4. ценю ваш ответ, но мне немного сложно понять рабочий процесс. Я не понимаю, из-за чего возникают ошибки form.py проверка или из views.py где есть form.is_valid(). как это собирается в шаблон

5. Да, когда вы запустите метод is_valid() , он выполнит проверку проверки и создаст атрибут errors формы. Затем это можно увидеть в вашем шаблоне.