首页 > 解决方案 > Django:用户登录系统与用户注册不在同一页面中工作

问题描述

我是 Django 新手,试图在同一个 HTML 页面中创建用户注册和登录系统。
我的用户注册部分正在工作,但登录部分没有。
所以,我的 views.py 在下面,

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')

我的 urls.py 也是,

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

编辑:我添加我的进口。

标签: pythondjangoauthentication

解决方案


我相信这是一个缩进错误。在这里,检查下面的代码,看看它是否有效。

你应该auth.signin改为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')

推荐阅读