IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> django写注册登录接口,并解决重复登录的问题 -> 正文阅读

[Python知识库]django写注册登录接口,并解决重复登录的问题

第一步先在models下边创建表结构:
class NewUser(models.Model):
    phone = models.CharField(verbose_name='手机号', max_length=11, unique=True)
    email = models.EmailField(verbose_name='邮箱', max_length=32, unique=True)
    nick = models.CharField(verbose_name="用户名", max_length=50)
    password = models.CharField(verbose_name="密码", max_length=32, null=True, blank=True)

    class Meta:
        verbose_name='用户表'
        verbose_name_plural=verbose_name
        db_table='new_user'

    def __str__(self):
        return self.nick
之后在view视图里边写接口

def register(request):
    email = request.POST.get('email')
    nick = request.POST.get('nick')
    phone = request.POST.get('phone')
    password = request.POST.get('password')
    password2 = request.POST.get('password2')

    if email and nick and phone and password and password2:
        if password != password2:
            return JsonResponse({"code": -1, 'mas': "两次输入的密码不一致"})
        user_email = models.NewUser.objects.filter(email=email)
        user_phone = models.NewUser.objects.filter(phone=phone)
        if user_email.exists():
            return JsonResponse({'code': -1, 'msg': 'email 存在'})
        if user_phone.exists():
            return JsonResponse({'code': -1, 'msg': 'phone 存在'})
        new_password = md5(password)

        uesr_save = models.NewUser(email=email, nick=nick, phone=phone, password=new_password)
        uesr_save.save()
        return JsonResponse({'code': 0, 'msg': 'success'})
    else:
        return JsonResponse({'code': -1, "msg": "不能为空"})

最后在user里边来加载

以上是注册的接口,下边写登录的接口,并生成token,给生成的token存在redis里边

首先第一步,配置redis:

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            'DECODE_RESPONSES':True      #这个的意思是让默认返回字符串
        }
    },
    "user": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
}

给这个配置放到settings下

之后使用pip install django_redis俩安装redis模块

在view视图层里边写接口的时候。先导入? import? django_redis就可以用了

这个解决重复登录的方法是,向redis中增加一个key

def login2(request):
    username = request.POST.get('username')
    password = request.POST.get('password')

    if username and password:
        user = models.NewUser.objects.filter(Q(email=username) | Q(phone=username))  # 相当于or

        if not user.exists():
            return JsonResponse({'code': -1, 'msg': '用户名输入错误'})
        if user.first().password != md5(password):
            return JsonResponse({'code': -1, 'msg': '密码输入错误'})
        user_key = 'seeeion_id:%s ' % user.first().phone
        res = django_redis.get_redis_connection()
        redis_token = res.get(user_key)
        print("redis_token",redis_token)
        if redis_token:
            return JsonResponse({'code': 0, 'msg': '已经登录过了,无需重复登录', "token": redis_token.decode()})#decode()是转成字符串
        token = md5(str(time.time()) + username)
        user_dict = json.dumps(model_to_dict(user.first()))

        expire_time = 60 * 60  # session到期时间
        res.set(user_key, token, expire_time)
        res.set(token, user_dict, expire_time)

        return JsonResponse({'code': 0, 'msg': '登录成功', 'token': token})
    else:
        return JsonResponse({'code': -1, "msg": "not null"})

接口写完之后,在配置个路由就可以是用了

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-26 16:52:04  更:2022-06-26 16:53:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 17:58:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码