Почему моя форма не выдает ошибок валидации после нажатия кнопки submit в django?

У меня есть две формы, отображаемые в одном представлении, основанном на функциях, оно отображает ошибки валидации только одной формы, когда я нажимаю кнопку регистрации, но когда я нажимаю кнопку входа, оно просто перезагружает мою страницу. и не показывает никакой ошибки валидации

views.py

def register(request):
    form = RegisterForm()
    form_b = LogInForm()
    if request.POST.get('submit') == 'sign_up':
        form = RegisterForm(request.POST)
        if form.is_valid():
            form.save()
    elif request.POST.get('submit') == 'log_in':
        form1 = LogInForm(request=request, data=request.POST)
        if form1.is_valid():
            uname = form1.cleaned_data['username']
            upass = form1.cleaned_data['password']
            user = authenticate(username=uname, password=upass)
            if user is not None:
                login(request, user)
                return redirect('/shop/')
    else:
        form = RegisterForm()
        form_b = LogInForm()
    return render(request, 'reg.html', {'form': form, 'form1': form_b})

forms.py

from distutils.command.clean import clean
from xml.dom import ValidationErr
from django import forms
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.contrib.auth.models import User

class RegisterForm(UserCreationForm):
    password1 = forms.CharField(widget=forms.PasswordInput())
    class Meta:
        model = User
        fields = ['username', 'email']

class LogInForm(AuthenticationForm):
    username = forms.CharField(widget=forms.TextInput())
    password = forms.CharField(widget=forms.PasswordInput())

reg.html

<form class="loginForm" action="" method="POST" novalidate>        
        {% csrf_token %} 
        {% for field in form %}
           <p> {{field.label_tag}}  {{field}} </p>
           <p> {{field.errors}} </p>
        {% endfor %}
        <button type="submit" class="btnLogin" name='submit' value='sign_up'>Sign Up</button>
     </form>
     <form class="loginForm" action="" method="post" novalidate> 
        {% csrf_token %}
        {% for field in form1 %}
           <p> {{field.label_tag}}  {{field}} </p>
           <p> {{field.errors | striptags}} </p>
        {% endfor %}
     <button  class="btnLogin" type="submit"  name='submit' value='log_in'>Log In </button>
     </form>

Попробуйте создать отдельное представление для регистрации и входа.

попробуйте этот способ:

views.py:

def register(request):
    if request.method == 'POST':
        form = RegisterForm(request.POST)
        if form.is_valid:
            form.save()
            username = form.cleaned_data.get('username')
            # messages.success(request,f'Welcome { username }')
            return HttpResponseRedirect('/users/')
    else:
        form = RegisterForm()
    return render(request,'users/register.html',{'form':form})

And in urls.py:

path('login',auth_views.LoginView.as_view(template_name='users/login.html'),name='login'),
Вернуться на верх