day4(编写注册接口)
1.编写注册接口
1.1 user/urls.py中添加路由
urlpatterns = [
path('register/', views.RegisterView.as_view()), # 注册视图, /user/register/
]
1.2 user/views.py中写注册视图函数
class RegisterView(APIView):
permission_classes = (AllowAny,)
def post(self,request):
"""
接收邮箱和密码, 前端校验两遍一致性, 注册成功后返回成功, 然后用户自行登录获取token
1. 随机用户名
2. 生成用户
3. 设置用户密码
4. 保存用户
:param request:
:return: {'code':0,'msg':'注册成功'}
"""
email=request.data.get('email')
password=request.data.get('password')
if all([email,password]):
pass
else:
return Response({'code':9999,'msg':'参数不全'})
rand_name=self.randomUsername()
user=User(username=rand_name,email=email)
user.set_password(password)
user.save()
return Response({'code':0,'msg':'注册成功'})
def randomUsername(self):
d=datetime.datetime.now()
base='SYL'
time_str = '%04d%02d%02d%02d%02d' % (d.year, d.month, d.day, d.hour, d.minute)
rand_num = str(random.randint(10000, 99999))
return base + time_str + rand_num
2.重写django认证
2.1syl/settings.py中指定自定义后端认证函数位置
#自定义验证后端
AUTHENTICATION_BACKENDS = ['user.utils.EmailAuthBackend']
2.2user/utils.py中重写认证函数
class EmailAuthBackend:
def authenticate(self, request, username=None, password=None):
try:
user = User.objects.get(username=username)
except Exception as e:
user=None
if not user:
try:
user = User.objects.get(email=username)
except Exception as e:
user=None
if user and user.check_password(password):
return user
else:
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
3.注册用户&测试登录
3.1注册接口测试
http://192.168.56.100:8888/user/register/

3.2 登录接口测试
注: 认证时只能识别username,所以必须要在请求中携带username字段
http://192.168.56.100:8888/user/login/

3.3 获取用户列表接口测试
访问接口
http://192.168.56.100:8888/user/user/5/
测试自定义权限
# 自定义权限类 permission_classes = (MyPermission,)
# 自定义认证类, 自定义会覆盖全局配置
authentication_classes = (JSONWebTokenAuthentication,)

day4(编写注册接口)的更多相关文章
- golang自定义路由控制实现(二)-流式注册接口以及支持RESTFUL
先简单回顾一下在上一篇的文章中,上一篇我主要是结合了数组和Map完成路由映射,数组的大小为8,下标为0的代表Get方法,以此类推,而数组的值则是Map,键为URL,值则是我们编写对应的接口.但 ...
- Django商城项目笔记No.7用户部分-注册接口-判断用户名和手机号是否存在
Django商城项目笔记No.7用户部分-注册接口-判断用户名和手机号是否存在 判断用户名是否存在 后端视图代码实现,在users/view.py里编写如下代码 class UsernameCount ...
- day1作业:编写登陆接口
作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 思路:要求是编写登陆接口,那么要有一个存放用户信息的模块:三次后锁定,要有一个存放锁定用户信息的模块:我们知 ...
- day1作业一:编写登陆接口
作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 Readme: (1)提示用户输入用户名: (2)用户名验证,验证是否已经锁定: (3)是否锁定:已锁定告诉 ...
- python之编写登陆接口(第一天)
作业:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 针对此实例写了有二种类型的脚本,略有不同,具体如下: 帐号文件account.txt内容如下: sam 123 david ...
- 关于python怎样编写登录接口
把今天的成果展示下,关于怎么用python编写登录接口, 要求是 1.输入用户名和密码 2.输错三次密码就锁定用户 3.认证成功后输出欢迎信息 账号文件内容如下: sanjiang sanjian ...
- 35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n
35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现in ...
- Python学习之编写登陆接口(Day1,作业一)
作业一:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定(下次登陆还是锁定) 知识点:while循环,for循环,文件操作,if判断,列表操作 思路: 1.登陆,三次登陆失败,锁定 ...
- Python之编写登录接口
作业:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 帐号文件account.txt内容如下: liuyueming 123zhangsan 123lisi 123 锁文件acc ...
随机推荐
- Java—多线程
一.多线程 原理: 一个cpu内核有"一个指针",由于cpu的频率过高,所以感觉不到卡顿.(伪线程) 二.进程&线程 进程:进程指正在运行的程序.确切的来说,当一个程序进入 ...
- Tim Urban:如何选择真正适合你的职业?
Wait But Why是一个专注于写长博客的网站,Tim Urban是网站的创始人之一.Tim Urban专注于写长论文,与时下的轻度阅读完全背道而驰,文章动辄几千甚至上万字,但令人吃惊的是却拥有惊 ...
- string.contains()
public class test { public static void main(String[] args){ System.out.println("abcde".con ...
- Selective Acknowledgment 选项 浅析 1
抓包的时候,发现 tcp 三次握手中一般会有几个options 一个是mss 一个是ws 一个sack perm 这次主要是来说一说 sack 这个选项: 1. 只重传超时的数据包,比较实用与后 ...
- netfilter 的扩展功能 helper tftp-nat
/* 需要对conntrack进行功能扩展的协议,会初始化一个struct nf_conntrack_helper 实例,把该实例注册到Netfilter中管理的全局哈希表中. 查找helper使用的 ...
- 聊一聊sockmap 以及ebpf 实例演示
eBPF实质上是一个内核注入技术 用户态可以用C来写运行的代码,再通过一个Clang&LLVM的编译器将C代码编译成BPF目标码: 用户态通过系统调用bpf()将BPF目标码注入到内核当中,并 ...
- 线程队列分享ppt
- c++ 11字符串与string转换常用函数
这里主要介绍一下string to int 其他方法与这个类似,可到头文件 <string> 中查看 @_Str 转换的字符串 @_Idx 转换的长度(位数) @_Base 进制 doub ...
- 手写atoi、strcpy、strcat
一:实现atoi函数 1 #include<iostream> 2 3 using namespace std; 4 5 int atoi_my(const char *str) 6 { ...
- 工作流(workflow)
1,JBPM 工作流(开源历史悠久) 2,activity 工作流(开源历史悠久) 3,workable 工作流(功能比较强大,但是开源维护缓慢,比较注重商业化) 以上三个是主流的工作流