Django - Содержать оба представления регистрации и входа на одной странице

Я создаю простое приложение на Django, где мои пользователи могут регистрироваться и входить в свои аккаунты.

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

Моя регистрационная форма:

<form action = "" method = "POST">
                {% csrf_token %}
                <input type="email" placeholder="Email" name = "email"  />
                <input type="text" placeholder="Username" name = "username" />
                <input type="password" placeholder="Password" name = "password" />
                <button type = "submit" name = "register">Register</button>
            </form>

Моя форма входа:

<form  action = "" method = "POST">
                {% csrf_token %}

                <input type="text" placeholder="Username" name = "username" />
                <input type="password" placeholder="Password" name = "password"  />
                <button  type = "submit" name = "login">Log In</button>
                
            </form>

И наконец, мой взгляд (я взял за основу [это] (How can i Register and Login In The Same Page in Django? решение, но оно не работает):

def home(request):
    if "register" in request.method == "POST":

        if request.method == "POST":
            email = request.POST.get('email')
            username = request.POST.get('username')
            password = request.POST.get('password')

            newuser = User.objects.create_user(username = username, email = email, password = password, )
            newuser.save()
        
            user = authenticate(request, username=username, password=password)

    if "login" in request.method == "POST":
        if request.user.is_authenticated:
            return HttpResponseRedirect("/levels/1") # redirect 2 dashboard
        else:
            if request.method == 'POST':
                username = request.POST.get('username')
                password = request.POST.get('password')

                user = authenticate(username=username, password=password)
                if user is not None:
                    login(request, user)

                    return HttpResponseRedirect("/levels/1") #also redirect to dashboard
                else:
                    
                    print("error")


    
    return render(request, 'home.html', )

Может ли кто-нибудь помочь мне? Я хочу, чтобы у меня была форма для входа и регистрации на одном экране

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

Но это не работает

Я бы предложил вам попробовать использовать разные имена для каждого входа, в вашем коде вы использовали одинаковые имена, и я думаю, что они конфликтуют друг с другом!!!

Вернуться на верх