python - 如何优雅地实现django的登录/注册?

查看:150
本文介绍了python - 如何优雅地实现django的登录/注册?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我是看的Django Book的教程,然后用最原始的方式实现的。请问关于登录和注册,Django有没有封装像ListView, DetailView, FormView这样的class来直接实现呢?


这是login代码的实现

def user_login(request):
    if request.POST:
        username = password = ''
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(username=username, password=password)
        if user is not None and user.is_active:
            login(request, user)
            return redirect('/')
    else:
        context = {}
        return render(request, 'account/login.html', context)


这是register代码的实现 

def user_register(request):
    if request.method == "POST":
        register_form = UserForm(request.POST)
        if register_form.is_valid():
            username = register_form.cleaned_data['username']
            password = register_form.cleaned_data['password']
            email = register_form.cleaned_data['email']

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

            login(request, authenticate(username=username, password=password))
            return redirect('/')
    else:
        register_form = UserForm()
        context = {'register_form': register_form}
        return render(request, 'account/register.html', context)

这是logout代码的实现

def user_logout(request):
    logout(request)
    return redirect('/')

一般在实际开发过程中会采用什么方法实现登录/注册/登出呢?

解决方案

首先登陆你肯定要算一个session或者cookies给前端,这样在登陆之后,以后前端就会拿着这个算好的session或者cookies上来找你,说我已经登陆了,这是我登陆的凭据,然后服务器端在拿到之后,计算一下是不是跟我算出来的一样,如果是说明是正常登陆了。而不是 简单的跳转一个页面,什么也信息也不回传。

注册这个不用说了吧。。就是往数据库里面写账号密码,然后用回登陆的时候然后比对,正确了就跳转登陆。

登出就是清理掉该用户的登陆信息,比如cookies刷新session啥的,检测不到了之后就会不能访问登陆后的页面了就跳转重定向到登陆页面就可以了。

这篇关于python - 如何优雅地实现django的登录/注册?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆