Я хочу управлять ошибками, которые я получаю в формах django на html странице, так, как я хочу - PullRequest
0 голосов
/ 09 октября 2019

enter image description here создали объект с некоторыми проверками. Я хочу правильно отобразить ошибку в HTML, например. Если я получаю сообщение об ошибке для поля пароля, я хочу отобразить его перед этим полем. Я делюсь своим кодом и снимком экрана со страницей после того, как я получил сообщение об ошибке в форме. Короче говоря, я хочу управлять ошибками форм в HTML так, как я хочу.

forms.py

class UsersForm(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput,validators=[validators.MinLengthValidator(8),])
    password_1 = forms.CharField(widget=forms.PasswordInput,label='Confirm Password')    
    class Meta:
        model = Users
        fields = ('username','first_name','last_name','date_of_birth')
        labels = {
            'date_of_birth': ('D.O.B'),
        }
        widgets = {
            'date_of_birth': DateInput(attrs={'type': 'date'})
        }

views.py

def create_user(request):
    if request.method == 'POST':
        form = UsersForm(request.POST)
        u = User.objects.get(username=request.user.get_username())
        if request.POST.get('password') != request.POST.get('password_1'):
            messages.error(request,'password mismatch, try again')
            return render(request,'login.html',{'form':form})         
        elif form.is_valid():
            cUser = Users.objects.create(username=form.cleaned_data['username'],
                first_name=form.cleaned_data['first_name'],
                last_name=form.cleaned_data['last_name'],
                password=make_password(form.cleaned_data['password']),
                date_of_birth=form.cleaned_data['date_of_birth'],
                created_by= u,)
            cUser.save()
        else:
            return render(request,'login.html',{'form':form})            
    form = UsersForm()
    context = {"form":form}
    return render(request,'login.html',context)

login.html

<code>    <!DOCTYPE html>
    <html>
    <body>
        <pre><center>
            <h1>User Creation Form</h1>
            <form action = '' method="post">
                {% csrf_token %}    
            <table>
                {{ form.as_table }}              
            </table>  
            <input type="submit" name="register">               
            <h3>  
                {% for message in messages %}
                {{ message }}
                {% endfor %}
            </h3>
        </form>   
        </center>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...