Django 身份验证新

问题描述 投票:0回答:1

我一直在尝试在 django 中进行登录,就像我们在其他编程语言中所做的那样。我知道它是一个框架,但我没有使用 Django 的默认“用户”模型,而是定义了自己的名为 companyUsers 的模型,因此它以“id”作为主键。所以我需要一个替代系统来登录。我不明白 Django 后端的确切用途是什么。我只需要让用户使用有效的凭据登录。即使有人有任何想法在不使用用户模型和默认认证系统的情况下编写登录信息,我也提到了 chatGpt ,

我期待像平常一样的登录代码。

python django authentication
1个回答
0
投票

这里我尝试在不使用 Django 用户模型的情况下实现自定义

login
logout
功能,这里我编写了自定义
(login and logout)
功能的基本代码。您可以根据您的要求定制

模型.py

from django.db import models
# Create your models here.

class UserModel(models.Model):
    email = models.EmailField()
    password = models.CharField(max_length=255)
    is_active = models.BooleanField(default=True)


    def __str__(self):
        return self.email

views.py

from django.shortcuts import render, redirect
from .models import *
from .serializers import *
from django.contrib import messages

def login_checker(request,email,password,):
    is_logged_in = UserModel.objects.filter(email=email,password=password,is_active=True)
    user = None
    if is_logged_in.exists():
        request.session['user'] = {'email':is_logged_in[0].email,'password':is_logged_in[0].password,'is_active':is_logged_in[0].is_active}
        user = request.session['user']
    else:
        user=None
    return user
    
def LoginView(request):
    if request.method == 'POST':
        email = request.POST.get('email')
        password = request.POST.get('password')
        user = login_checker(request,email,password)
        if user is not None:
            messages.success(request,'Login success')
            return redirect('/default/')
        else:
            messages.error(request,'Login failed!')

    context = {'form':'form'}
    return render(request,'index.html',context)

def DefaultView(request):
    return render(request,'singlestory.html')

def LogoutView(request):
    request.session.pop('user')
    messages.success(request,'Logout success')
    return redirect('/')

工作中...

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.