Как я могу зарегистрироваться и войти в систему на одной и той же странице в Django?

Я хотел бы иметь и форму входа и форму регистрации на одной странице в одном шаблоне, поэтому я хотел бы иметь их в одной функции просмотра, но я не очень уверен, как я могу это сделать, вот мой код.

Views.py

def register(request):
form = CreateUserForm()
if request.method == 'POST':
    form = CreateUserForm(request.POST) == "Register"
    if form.is_valid():
        form.save()
        user = form.cleaned_data.get('username')
        messages.success(request,"Account was Created for " + user)
    
context = {'form':form}
return render(request,'login.html',context)
def login(request):
if request.method == "POST":
    if request.POST.get('submit') == 'Login':
        username = request.POST.get('username')
        password = request.POST.get('password1')

        user = authenticate(request, username=username, password=password)

        if user is not None:
            login(request,user)
            return redirect('shop.html')
        else:
            messages.info(request, 'Wrong Username or password')
context = {}
return render(request,'shop.html',context)

login.html

 <div class="formBx">
            <form method="POST",name="Login",value="Login">
            {% csrf_token %}
            <h2>Sign In</h2>
            {{form.username}}
            {{form.password1}}
            <input type="submit" name="submit" value="Login">
            <p class="signup">Don't have an Account?<a href="#" onclick="toggleForm();">Sign Up.</a></p>
            {% for message in messages %}
            <p id="messages">{{message}}</p>
            {% endfor %}
            </form>
        </div>
     </div>
     <div class="user signUpBx">
        <div class="formBx">
            <form method="POST" value="Register">
            {% csrf_token %}
            <h2>Create an account</h2>
            {{form.username}}
            {{form.email}}
            {{form.password1}}
            {{form.password2}}
            <input type="submit" name="submit" value="Register">
            <p class="signup">Already Have an Account?<a href="#" onclick="toggleForm();">Sign In.</a></p>
            {% for message in messages %}
            <p id="messages">{{message}}</p>
            {% endfor %}
            </form>
        </div>

Я получаю ошибку AttributeError в /login/ Объект 'bool' не имеет атрибута 'is_valid' ошибка прямо сейчас.

Вы можете использовать две отдельные формы для входа и регистрации в одном представлении. Вот пример:

def register_login(request):
   if "register" in request.method == "POST": #add the name "register" in your html button
    ..... your registration code

   if "login" in request.method == "POST": #add the name "login" in your html button
    ..... your login code 


**html**
<form>
{%csrf_token%}
.... your registration form
<button type="submit" name="register">register</button>
</form>

<form>
{%csrf_token%}
.... your login form
<button type="submit" name="login">register</button>
</form>
 
Вернуться на верх