如果要使用Django自带的auth认证,那么必须要使用Django自己创建Usermodels
导入模块
from django.contrib.auth.models import User
注意:auth.User中默认的字段只有username、password、email、first_name和last_name五个,一般网站的应用是不够,那么如何增加字段?
解决办法是:
在models建立一个新的Model,然后一对一地连接在一起,假设我们要穿件一个用户类Profile,并且要增加身高、性别、以及年龄3个字段。就可以在models.py中定义。
from django.db import models from django.contrib.auth.models import User class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) height = models.PositiveIntegerField(default=160) male = models.BooleanField(default=False) age = models.SmallIntegerField()
获取Profile信息
user = User.objects.filter(username=username) userInfo=models.Profile.objects.get(user=user)
常用auth函数
from django.contrib.auth import authenticate from django.contrib import auth from django.contrib.auth.decorators import login_required
登陆验证案列:
def login(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') user = authenticate(username=username, password=password) if user: if user.is_active: messages.add_message(request, messages.SUCCESS, '登陆成功') else: messages.add_message(request, messages.WARNING, '账号还没激活') else: messages.add_message(request, messages.ERROR, '用户密码错误') return render(request, 'login.html', locals())