开发新项目django_event

startapp api

创建 db.sqlite3

setting中加api

总路由url添加 from api import views

urlpatterns = [
path('admin/', admin.site.urls),
path('event/api/admin/', views.admin),
path('event/api/register/', views.register),
path('event/api/login/', views.login),
path('event/api/add_event/', views.add_event),
path('event/api/get_eventlist/', views.get_eventlist),
path('event/api/get_eventdetail/', views.get_eventdetail),
path('event/api/order/', views.order),
path('event/api/pay/', views.pay),
path('event/api/sign/', views.sign)
]
api下views增加
每个接口的方法 返回 (123)
加密:base64
单token验证 jwt
返回token 和uuid
每个接口都要调一次登录获取token
uid+token+随机三位字符串经过md5加密后31位小写 返回头信息

登录接口 传username password 去数据库查是否存在
setting中添加app
'rest_framework.authtoken'
执行数据库同步命令 tool下run manage.py task 命令migrate
链接数据库

 

 执行命令createsuperuser,创建两个超级用户

views引入from  django.contrib.auth.models import  User #对应auth_user表
views引入 token  from rest_framework.authtoken.models import Token

 

 

进入shell命令执行一下操作

 

 执行结果

 

 

from rest_framework.authtoken.models import Token
from django.contrib import auth
import base64
def admin(request):
#先取参 判断有效值的校验 然后是业务逻辑
username = request.POST.get('username')
password = request.POST.get('password')
if username is not None and password is not None:
#可以直接查user表或者用系统自带的认证auth函数,协助我们认证 因为数据库密码是加密后的,用auth方法
#前端传的是明文 和后端数据库也可以做校验
user = auth.authenticate(username=username,password=base64.b64decode(password)[3:])
#如果用户名存在
if user:
if user.is_superuser == True:
#取token 取id
id = user.id
token =Token.objects.filter(user=user).first().key
error_code = 0
result = {'error_code':error_code,'uid':id,'token':token}
else:
result = {'error_code':10002}
else:
result = {'error_code':10000}

else:
result = {'error_code':10001,'msg':'缺少必要参数'}
return JsonResponse(result)
models:
class UserDetail(models.Model):
#与用户表 1对1关系
phone = models.CharField(max_length=14,null=False,unique=True)
user = models.OneToOneField(User,on_delete=models.CASCADE)


posted @ 2020-06-09 12:57  钱小多多多  阅读(283)  评论(0)    收藏  举报