QQ截图20200319131635.png 2.注册与登录 2.1序列化器 from rest_framework import serializers from course import models...if not username or not pwd: login_obj.code = 1010 login_obj.error = '用户名或密码不能为空...if not user_obj: login_obj.code = 1020 login_obj.error = '用户名或密码错误...那么我们如何手动的更改时间呢?...import BaseAuthentication from rest_framework.exceptions import AuthenticationFailed from course import
2.2使用缓存 在Django REST framework中使用缓存,可以通过 drf-extensions扩展来实现。...注意,cache_response装饰器既可以装饰在类视图中的get方法上,也可以装饰在REST framework扩展类提供的list或retrieve方法上。...三个扩展类都是在 rest_framework_extensions.cache.mixins中。...例如我想更改用户A的默认地址为B,直接将默认地址id更改B的id就可以了,只需一步,比上一种方法要好的多。...因为我们序列化时需要的是省市县的名称,所以我们在嵌套序列化的时候使用StringRelatedField方法。系统自动生成的时候,默认是序列化为主键,我们需要对其进行更改。
} ··· 签发总结 从obtain_jwt_token开始, 通过ObtainJSONWebToken视图类处理,其实是父类JSONWebTokenAPIView的post方法通过传入的用户名和密码处理获取当前用户...import APIView from rest_framework.viewsets import ViewSetMixin from rest_framework.decorators import...action from rest_framework.response import Response from rest_framework_jwt.settings import api_settings...' return Response(response_dict) 序列化器 from rest_framework.exceptions import ValidationError...是序列化类和视图类沟通的桥梁 自定义认证类 auth.py import jwt from django.utils.translation import ugettext as _ from rest_framework
跟着官方文档学Python Django Rest framework 这周将会持续更新跟着官方文档学Python系列文章,主要是围绕web框架以及其他后端组件的官方文档展开学习。...DELETE http://[hostname]/api/users/[user_id] 删除用户 什么是序列化和反序列化?...Django Rest framework Django REST framework是一个内置在django里面的子应用,可以快速的开发REST API接口应用。...'rest_framework', ] 在项目中如果使用rest_framework框架实现API接口,主要有以下三个步骤: 将请求的数据(如JSON格式)转换为模型类对象 通过模型类对象进行数据库操作...首先我们要定义一些序列化程序,子应用下创建serializers.py。
DRF即Django REST framework的缩写,官网上说:Django REST framework是一个强大而灵活的工具包,用于构建Web API。...'rest_framework', ] 同步数据库 python manage.py migrate 创建超级用户admin,密码设置为password123: python manage.py createsuperuser...--email admin@example.com --username admin 创建API 接下来就是重点,我们要创建一个序列化程序将model转换成json格式。...1.创建序列化类 在quickstart应用下面创建serializers.py: from django.contrib.auth.models import User, Group from rest_framework...可以发现,和Django程序相比,我们没有写template做前端的显示,而是写了序列化类提供API。前端可以分离出来,使用API来和后端通信。
发送出去 注册序列化器 在users路径下新建一个序列化器: backend/apps/users/serializers.py 在注册账号的时候,需要用户通过前端发送用户名、密码、邮箱、姓名、电话这些信息过来...,然后后台将他们存到数据库里面 在一些网站注册的时候还会要求用户输入两遍密码,防止用户输入错误,所以我们也做一下这个功能 编写一个类继承于ModelSerializer from rest_framework...queryset=User.objects.all(), message='此邮箱已注册')] }, } drf中自带了一个判重的校验,如果有定制的校验的话就需要编写一个函数 from rest_framework.validators...在校验(返回)的时候处理下准备返回的数据,把原来的字段access替换为token 新增userInfo部分,将对应的用户id、姓名、权限返回 from rest_framework_simplejwt.serializers...在需求中,管理员需要能对其他账号进行增删改查操作,所以需要编写一个比较全的序列化器来处理 密码在响应的时候不展示,所以在extra_kwargs中特别标注 更改密码的时候由于密码是加密的,所以需要使用自带的
'rest_framework', 'snippets.apps.SnippetsConfig', ] 只有添加后,app才会生效哦。...在snippets目录下创建serializers.py,添加以下代码: from rest_framework import serializers from snippets.models import...编写views 我们之前用的是已经封装好的rest_framework.viewsets,这里直接用Django原生的view。...- POST/PUT/PATCH:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的 401 Unauthorized - *:表示用户没有权限(令牌、用户名、密码错误) 403...Forbidden - *:表示用户得到授权(与401错误相对),但是访问是被禁止的 最后,添加路由,新建文件snippets/urls.py: from django.urls import path
,密码,确认密码,用户类型 登陆接口,校验用户名,密码,生成随机字符串 认证功能,除了注册登陆接口外,所有接口都要登陆后访问 频率限制功能,每分钟访问5次,book的所有接口,使用这个频率类 权限限制功能...from rest_framework import serializers from .models import * # 用户序列化器 class UserSerializer(serializers.ModelSerializer...import action from rest_framework.response import Response from rest_framework.viewsets import ViewSet...{user.username}登录成功', 'token': token}) return Response({'code': 4004, 'msg': '校验失败,用户名或密码错误'}...import BaseAuthentication from rest_framework.exceptions import AuthenticationFailed from rest_framework.permissions
DRF 框架,全称为 Django Rest Framework,是 Django 内置模块的扩展,用于创建标准化 RESTful API;它利用 ORM 映射数据库,并自定义序列化数据进行返回,多用于前后端分离项目...python3 manage.py migrate # 创建一个超级用户,记住用户名和密码 python3 manage.py createsuperuser 2-5 添加应用并配置 DRF 权限...在项目配置文件 settings.py 中,添加应用「 rest_framework 」 # settings.py # 添加应用:rest_framework INSTALLED_APPS = [...', ] 然后配置 REST_FRAMEWORK 权限 # 配置DRF权限 REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': [...'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly', ] } 2-6 自定义序列化类并关联模型 在项目目录下的
# 完成数据的校验,会走序列化类的 全局钩子校验规则,校验得到登录用户并签发token存储在序列化对象中 核心源码:rest_framework_jwt.serializer.JSONWebTokenSerializer...datetime.timedelta(days=7), # 反爬小措施前缀 'JWT_AUTH_HEADER_PREFIX': 'JWT', } 多方式登录签发token 手机号登录 邮箱登录 用户密码登录...2.邮箱登录 3.用户密码登录 """ from . import serializers from utils.response import APIResponse class LoginAPIView...2.邮箱登录 3.用户密码登录 """ from . import serializers from utils.response import APIResponse class LoginAPIView...return APIResponse(token=user_ser.token, results=serializers.UserModelSerializer(user_ser.user).data) 用户名密码登录
第一季 | Django REST 自定义用户登录 ? Django REST框架构建Web API。...修改用户密码需要注意哪些 密码加密 ? ?...Django REST 中掌握 serializers 序列化 和 views 视图,能满足很大一部分需求开发,在 serializers 序列化中常用的两大类:Serializer 和 ModelSerializer...from rest_framework.serializers import Serializer from rest_framework.serializers import ModelSerializer...32个字符"}, label="密码", help_text="修改密码不超过32个字符") ?
那么在group表里面要显示这个组里面的全部的用户,那么就可以在group序列化代码里面添加一个字段’user_set’ 可以理解为外键的意思,记住格式就是这样写的。...REST_FRAMEWORK = { # 新版本必须写下面的话 'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.PageNumberPagination...'DEFAULT_PERMISSION_CLASSES': [ #这个代码就是控制后台用户的权限 'rest_framework.permissions.IsAdminUser',...其实我们在这个里面之前创建的用户都没有设置密码,那么这个时候我们可以利用超级用户登录到admin后台给这些用户设置密码。这些用户登录之后,还是没有权限看数据库里面的东西。...总结 setting 对于rest框架,在setting设置的时候,所有 的东西都是在REST_FRAMEWORK 里面进行设置,后面就是字典。
OK 在Django中创建用户 使用示例密码password123创建一个名为admin的初始用户: $ python3 .....在Django中实现序列化器和视图 为了使Django能够将信息传递给HTTP GET请求,必须将信息对象转换为有效的响应数据。 Django为此实现了序列化器。...在文本编辑器中打开urls.py ,然后用以下代码替换默认的示例代码: from django.urls import include, path from rest_framework import...', namespace='rest_framework')) ] 调整您的Django项目设置 这个示例项目的设置模块存储在 tutorial / settings.py 中,所以在文本编辑器中打开它...'rest_framework', ] 测试你的 Django API 现在,您可以测试构建的API。
Django REST Framework 简介 Django REST Framework,是一套基于Django的REST风格的框架。...OK 创建超级管理员 使用createsuperuser命令来创建超级管理员账户,密码至少8位数字和字母组合。...数据序列化 Serializers用于定义API的表现形式,如返回哪些字段、返回怎样的格式等。这里序列化Django自带的User和Group。...序列化代码如下: serializers.py from django.contrib.auth.models import User,Group from rest_framework import...比如用户查询User信息或查询Group信息,那么程序内部要定义好怎么去查询。
401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。...from rest_framework.request import Request from rest_framework.serializers import Serializer from rest_framework.settings...from rest_framework.serializers import Serializer from rest_framework.settings import APISettings from...rest_framework.filters import SearchFilter from rest_framework.pagination import PageNumberPagination...from rest_framework.authentication import TokenAuthentication from rest_framework.permissions import
我们将使用 django-rest 创建一个简单的API,以允许管理员用户查看和编辑系统中的user和group。...现在先同步你的数据库: python manage.py migrate 我们还将创建一个名为admin的初始用户,其密码为password123。稍后,我们将在示例中验证该用户。...,打开应用程序的目录。...要启用它,请将以下行添加到tutorial/settings.py中 REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination...python manage.py runserver 使用浏览器访问 【http://127.0.0.1:8000/users/】 ,用户名和密码是你之前创建的 admin password123
Django REST框架构建Web API。...试着修改用手机短信验证码登录 可以自定义用户登录 ? ? 在登录需求中常见的手机验证码如何实现,原有的 obtain_jwt_token 方法中只能用户名和密码。...from rest_framework import serializers ModelSerializer 类会根据模型自动生成一组字段;自动为序列化生成验证器;同时还包含 .create() 和 ....1.users 应用下创建 serializers.py 文件 from django.contrib.auth import get_user_model, authenticate from rest_framework...生成 token from rest_framework_jwt.serializers import jwt_encode_handler, jwt_payload_handler def create_token
源码繁琐,多说无益,耐心细读官方文档: https://www.django-rest-framework.org/ 个人总结: REST是一种软件架构设计风格,不是标准,也不是具体的技术实现,只是提供了一组设计原则和约束条件...(直接在官网下载即可) 3 序列化组件 序列化组件的使用: --get接口设计: 导入序列化组件:from rest_framework import serializers 定义序列化类,...定义:需要为post新增url,因为根据规范,url定位资源,http请求方式定义用户行为 定义post方法:在视图类中定义post方法 开始序列化:通过我们上面定义的序列化类,创建一个序列化对象,传入参数...token认证步骤: 用户登录,服务器端获取密码,查询用户表,如果存在该用户且第一次登录(或者token过期), 生成token,否则返回错误信息 如果用户不是第一次登录,且token未过期...else: response["status_code"] = 201 response["status_message"] = "登录失败,用户名或密码错误
Django Rest Framework 分页(下) ?...在之前的 django rest framework,其它组件中,在视图函数中继承类都是 rest_framework.view.APIView,这个 APIView 是继承的 django 中的 View...那么在 django rest framework 中,还有没有提供其它的类能够继承?...这里实现的功能和 django rest framework 之分页中的功能一样,先获取数据,分页,序列化返回。...② 路由 在执行之前要更改一下路由系统 ?
'rest_framework',]3. 创建一个简单的REST API我们将创建一个简单的REST API,用于管理用户列表。...(max_length=100) email = models.EmailField()然后,在serializers.py中定义一个序列化器来序列化用户模型:from rest_framework...代码解析在models.py中定义了一个简单的用户模型,其中包含了用户的姓名和邮箱。在serializers.py中定义了一个序列化器,用于将用户模型序列化成JSON格式。...例如,我们可以使用内置的身份验证和权限类来限制用户对资源的访问:from rest_framework.authentication import SessionAuthenticationfrom rest_framework.permissions...数据序列化与性能优化在处理大量数据时,有效地序列化和反序列化数据对性能至关重要。Django REST框架提供了丰富的序列化和性能优化功能,可以帮助我们提高应用程序的性能和效率。
领取专属 10元无门槛券
手把手带您无忧上云