Django 3.0 Формы: Ошибки формы не отображаются в шаблоне - PullRequest
0 голосов
/ 05 мая 2020
###I have model named Publisher in models.py file.###
###And based on this model, a modelForm has made, called "RegistrationForm".###
###Which renders form on registration.html template.###
<br /> <br />**This is code of registration.html**

<pre><code>
```
        <body>
            <div class="container">
                {% load my_filters %}
                <div class="row">
                    <div class="col-md-6 offset-md-3">
                        {% if registered %}
                            <h1>Thank you for registering!</h1>
                        {% else %}
                            <h1>Register Here</h1>
                            <h3>Just fill out the form.</h3>
                            <form enctype="multipart/form-data" method="POST">
                                {% csrf_token %}

                                {{ reg_form.non_field_errors }}
                                <div class="fieldWrapper">
                                    <div class="form-group">
                                        {{ reg_form.name.errors }}
                                        <label for="{{ reg_form.name.id_for_label }}" >Name:</label>
                                        {{ reg_form.name|addclass:'form-control' }}
                                    </div>
                                </div>
                                <div class="fieldWrapper">
                                    <div class="form-group">
                                        {{ reg_form.email.errors }}
                                        <label for="{{ reg_form.email.id_for_label }}">Email:</label>
                                        {{ reg_form.email|addclass:'form-control' }}
                                    </div>
                                </div>
                                <div class="fieldWrapper">
                                    <div class="form-group">
                                        {{ reg_form.contact.errors }}
                                        <label for="{{ reg_form.contact.id_for_label }}">Contact:</label>
                                        {{ reg_form.contact|addclass:'form-control' }}
                                    </div>
                                </div>
                                <div class="fieldWrapper">
                                    <div class="form-group">
                                        {{ reg_form.password.errors }}
                                        <label for="{{ reg_form.password.id_for_label }}">Password: 
                                        </label>
                                        {{ reg_form.password|addclass:'form-control' }}
                                    </div>
                                </div>
                                <div class="fieldWrapper">
                                    <div class="form-group">
                                        {{ reg_form.confirm_password.errors }}
                                        <label for="{{ reg_form.confirm_password.id_for_label }}">Confirm 
                                         Password:</label>
                                        {{ reg_form.confirm_password|addclass:'form-control' }}
                                    </div>
                                </div>
                                <input type="submit" name="" value="Register">
                            </form>
                        {% endif %}
                    </div>
                </div>
            </div>
        </body>

```
### Я НЕ использую прозрачные формы, просто визуализирую Django формы вручную и использую тег шаблона вручную для добавления классов в поля. ** Это тег шаблона, используемый для добавления классов в поля формы ** <pre> ``` @register.filter(name='addclass') def addclass(value, arg): return value.as_widget(attrs={'class': arg}) ``` ** Это модель в models.py ** <pre> ``` class Publisher(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) name = models.CharField('Name', max_length=50) email = models.EmailField('Email', unique=True) password = models.CharField('Password', max_length=50) contact = models.CharField('Contact #', max_length=16, unique=True, validators=[ RegexValidator( regex=r'^\+?1?\d{9,15}$', message="Phone number must be entered in the format '+123456789'. Up to 15 digits allowed." ), ],) def __str__(self): return self.name ``` ** Это форма в формах. py файл ** <pre> ``` class RegistrationForm(forms.ModelForm): password = forms.CharField(widget=forms.PasswordInput()) confirm_password = forms.CharField(widget=forms.PasswordInput()) class Meta(): model = Publisher fields = ('name','email','contact','password') def clean(self): cleaned_data = super(RegistrationForm, self).clean() password = cleaned_data.get("password") confirm_password = cleaned_data.get("confirm_password") if password != confirm_password: raise forms.ValidationError( "password and confirm_password does not match" ) ``` ** Это представление в файле views.py ** <pre> ``` def registration(request): registered = False if request.method == 'POST': reg_form = RegistrationForm(data=request.POST) if reg_form.is_valid(): user = reg_form.save() user.save() registered = True else: #Now issue is this printing statement working fine and printing errors on console.But #errors are not showing on template. print(reg_form.errors) else: reg_form = RegistrationForm() return render(request, 'seller/registration.html', {'reg_form': RegistrationForm, 'registered': registered }) ```

Я видел все переполнение стека и много пробовал, но ни один из них не помогает мне ПОЛУЧИТЬ МОИ ОШИБКИ НА ШАБЛОНЕ ФОРМЫ (Хотя такие ошибки, как пароль не совпадает, и ошибка контактного номера, et c печатаются на консоли django, как определено в инструкции else файла views.py ).

После заполнения формы неверными данными, нажав кнопку «отправить», она обновляет форму, показывая ошибки. И после заполнения формы с правильными данными пользователь регистрируется (отображается «Спасибо за регистрацию», как определено в шаблоне) . Я знаю, что должна быть глупость, которую я делаю или упускаю. Пожалуйста, дайте мне знать.

...