简体   繁体   中英

Django: user login system is not working in the same page with user registration

I'm new to Django and trying to make a user registration and login system in same HTML page.
My user registration part is working but login part is not.
So, my views.py is in the below,

from django.contrib import messages
from django.shortcuts import render, redirect 
from django.contrib.auth.models import User, auth

def index(request):
    if request.method == "POST":
        if request.POST.get('submit') == 'Kayıt Ol':
            username= request.POST['username']
            email= request.POST['email']
            password= request.POST['password']

            if User.objects.filter(username=username).exists():
               messages.info(request,'Bu kullanıcı adı kullanılıyor')
               return redirect('/')
            elif User.objects.filter(email=email).exists():
               messages.info(request,'Bu email kullanılıyor.')
               return redirect('/')
            else:
                user = User.objects.create_user(username=username, email=email, password=password)
                user.save()
                return redirect('/')
        else:
           return render(request, 'blog/SignPage.html')
    
    elif request.POST.get('submit') == 'Oturum Aç':
            username= request.POST.get('username')
            password= request.POST.get('password')

            user= auth.authenticate(username=username,password=password)

            if user is not None:
                auth.signin(request,user)
                redirect('/anasayfa')
            else : 
                messages.info(request,'Yanlış kullanıcı adı veya şifre')
                return redirect('/')

    else:
        return render(request, 'blog/SignPage.html')

Also my urls.py is,

urlpatterns = [
    path('', views.index, name='kaydol'),
]

Edit: I add my imports.

I believe it's an indentation error. Here, check the code below to see if it works.

And you should change auth.signin to auth.login .

def index(request):
    if request.method == "POST":
        if request.POST.get('submit') == 'Kayıt Ol':
            username= request.POST['username']
            email= request.POST['email']
            password= request.POST['password']

            if User.objects.filter(username=username).exists():
               messages.info(request,'Bu kullanıcı adı kullanılıyor')
               return redirect('/')
            elif User.objects.filter(email=email).exists():
               messages.info(request,'Bu email kullanılıyor.')
               return redirect('/')
            else:
                user = User.objects.create_user(username=username, email=email, password=password)
                user.save()
                return redirect('/')

        elif request.POST.get('submit') == 'Oturum Aç':
            username= request.POST.get('username')
            password= request.POST.get('password')

            user= auth.authenticate(username=username,password=password)

            if user is not None:
                auth.login(request,user)
                return redirect('/anasayfa')
            else : 
                messages.info(request,'Yanlış kullanıcı adı veya şifre')
                return redirect('/')

    else:
        return render(request, 'blog/SignPage.html')

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM