1. auth模块
我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。
Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点。它内置了强大的用户认证系统--auth,它默认使用 auth_user 表来存储用户数据。
from django.contrib import auth def login(request): if request.method == 'GET': return render(request, 'login.html') else: username = request.POST.get('username') password = (request.POST.get('password')) user_obj = auth.authenticate(request, username=username, password=password) if user_obj: auth.login(request, user=user_obj) return render(request,'main.html', {'username':username}) else: return redirect('/common/fail/')
from django.contrib.auth.decorators import login_required @login_required(login_url='/common/login/') # 不需要自己写装饰器了,先导一个模块,然后@login_required(login_url='/common/login/'),如果登录了,则继续执行,没有登录,则调到登录界面
def register(request): if request.method == 'GET': return render(request, 'register.html') else: username = request.POST.get('username') password = request.POST.get('password') surepassword = request.POST.get('surepassword') print(username, password, surepassword) if password == surepassword: User.objects.create_user(username=username, password=password) return render(request, 'login.html') else: return render(request, 'register.html')
def modify(request): if request.method == 'GET': return render(request, 'modify.html') else: username = request.POST.get('username') password = request.POST.get('password') new_password = request.POST.get('new_password') print(username, password, new_password) res = request.user.check_password(password) if res: request.user.set_password(new_password) request.user.save() return render(request, 'login.html') else: return render(request, 'modify.html')
def logout(request): auth.logout(request) return render(request, 'login.html')