1.设计user model
from django.db import models
#引入系统用户的类
from django.contrib.auth.models import AbstractUser
# Create your models here.
#UserProfile继承AbstractUser分类,进行拓展
class UserProfile(AbstractUser):
"""
用户类拓展
"""
name = models.CharField(max_length=30, null=True, blank=True, verbose_name="姓名" )
avatar = models.CharField(max_length=100, null=True, blank=True, verbose_name="头像")
role = models.CharField(max_length=10, verbose_name="角色")
class Meta:
verbose_name = "用户"
verbose_name_plural = verbose_name
def __str__(self):
return self.username
2.在setting中添加
AUTH_USER_MODEL = ' users.UserProfile'
# users为新建的app
将UserProfile替换原来系统auth_user
3.创建数据库表,如果已经创建过user表,需要删除全部的数据库表,在执行下面的命令,否则会报错。
python manage.py makemigrations
python manage.py migrate
4.查看数据表的生产,可以看到数据表users_userprofile,可以看到增加的三个字段:
5.配置rest framework jwt
INSTALLED_APPS = [
'rest_framework',
'rest_framework.authtoken',
'django_filters',
'corsheaders'
]
MIDDLEWARE = [
#设置浏览器跨域问题
'corsheaders.middleware.CorsMiddleware',
]
#允许全部跨站点请求
CORS_ORIGIN_ALLOW_ALL = True
MIDDLEWARE = [
#设置浏览器跨域问题
'corsheaders.middleware.CorsMiddleware',
]
#允许全部跨站点请求
CORS_ORIGIN_ALLOW_ALL = True
6.配置JWT
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
# 'rest_framework.authentication.TokenAuthentication',
# 将token做验证
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
),
}
# 设置过期时间
JWT_AUTH = {
'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),
'JWT_AUTH_HEADER_PREFIX': 'JWT',
}
7.配置URL 登录的链接地址 api/user/login:
先创建超级管理员账号,然后配置url进行访问测试。
# 创建超级管理员密码加密代码
from django.contrib.auth.hashers import make_password
self.password = make_password(raw_password)
from django.contrib import admin
from django.urls import path
from rest_framework_jwt.views import obtain_jwt_token
from django.conf.urls import url, include
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^api/user/login', obtain_jwt_token),
]
8.在postman中测试API接口