您现在的位置是: 网站首页 >Django >Vue+Django REST framework前后端分离生鲜电商 Django
【Vue+DRF生鲜电商】20.使用DRF自动生成文档的功能
admin2019年5月31日 11:26 【Django | Vue 】 1216人已围观
Vue+Django REST framework前后端分离生鲜电商简介 Vue+Django REST framework 打造前后端分离的生鲜电商项目(慕课网视频)。 Github地址:https://github.com/xyliurui/DjangoOnlineFreshSupermarket ; Django版本:2.2、djangorestframework:3.9.2。 前端Vue模板可以直接联系我拿。
## DRF Api文档自动生成功能 访问 https://www.django-rest-framework.org/topics/documenting-your-api/ 可以看到使用说明 在使用视图集时,应该使用相关的操作名称作为分隔符。 首先 urls.py 需要加上对应的路由 ```python # DjangoOnlineFreshSupermarket/urls.py # ...... # DRF文档 path('docs/', include_docs_urls(title='DRF文档')), ``` 之后就可以访问 http://127.0.0.1:8000/docs/ 查看文档 ![BLOG_20190531_113118_63](/media/blog/images/2019/05/BLOG_20190531_113118_63.png "博客图集BLOG_20190531_113118_63.png") ### categories文档 http://127.0.0.1:8000/docs/#categories ```python # apps/goods/views.py class CategoryViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet): # 注释很有用,在drf文档中 """ list: 商品分类列表 retrieve: 商品分类详情 """ ``` ![BLOG_20190531_113108_83](/media/blog/images/2019/05/BLOG_20190531_113108_83.png "博客图集BLOG_20190531_113108_83.png") ### goods文档 http://127.0.0.1:8000/docs/#goods 很多字段描述不完整,先进行配置 list: | Parameter | Description | | -------------- | -------------------------------------------- | | `page` | A page number within the paginated result set. | | `page_size` | Number of results to return per page. | | `name` | | | `goods_desc` | | | `min_price` | | | `max_price` | | | `is_hot` | | | `top_category` | | | `search` | A search term. | | `ordering` | Which field to use when ordering the results. | ```python # apps/goods/views.py class GoodsListViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet): """ list: 显示商品列表,分页、过滤、搜索、排序 retrieve: 显示商品详情 """ ``` 分页中文描述 ```python # apps/goods/views.py from django.utils.translation import ugettext_lazy as _ class GoodsPagination(PageNumberPagination): page_size = 12 # 每一页个数,由于前段 page_query_description = _('使用分页后的页码') # 分页文档中文描述 page_size_query_param = 'page_size' page_size_query_description = _('每页返回的结果数') page_query_param = 'page' # 参数?p=xx,将其修改为page,适应前端,也方便识别 max_page_size = 36 # 最大指定每页个数 ``` 过滤字段中文显示,添加`Filter`中的`help_text`属性 ```python # apps/goods/filters.py class GoodsFilter(filters.FilterSet): """ 商品的过滤类 """ name = filters.CharFilter(field_name='name', lookup_expr='contains', help_text='分类名模糊匹配') # 包含关系,模糊匹配 goods_desc = filters.CharFilter(field_name='name', lookup_expr='contains', help_text='商品描述模糊匹配') min_price = filters.NumberFilter(field_name="shop_price", lookup_expr='gte', help_text='最低价格') # 自定义字段 max_price = filters.NumberFilter(field_name="shop_price", lookup_expr='lte', help_text='最高价格') top_category = filters.NumberFilter(method='top_category_filter', field_name='category_id', lookup_expr='=', help_text='自定义过滤某个一级分类') # 自定义过滤,过滤某个一级分类 # ...... ``` ![BLOG_20190531_113047_31](/media/blog/images/2019/05/BLOG_20190531_113047_31.png "博客图集BLOG_20190531_113047_31.png") read: | Parameter | Description | | -------------- | --------------------------------------------- | | `name` | | | `goods_desc` | | | `min_price` | | | `max_price` | | | `is_hot` | | | `top_category` | | | `search` | A search term. | | `ordering` | Which field to use when ordering the results. | 修改以上字段描述后 ![BLOG_20190531_113037_94](/media/blog/images/2019/05/BLOG_20190531_113037_94.png "博客图集BLOG_20190531_113037_94.png") ### parent_categories文档 http://127.0.0.1:8000/docs/#parent_categories ```python # apps/users/views.py class ParentCategoryViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet): """ list: 根据子类别查询父类别 retrieve: 根据子类别查询父类别详情 """ ``` ![BLOG_20190531_113011_32](/media/blog/images/2019/05/BLOG_20190531_113011_32.png "博客图集BLOG_20190531_113011_32.png") ### userfavs文档 http://127.0.0.1:8000/docs/#userfavs ```python # apps/user_operation/views.py class UserFavViewSet(mixins.CreateModelMixin, mixins.DestroyModelMixin, mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet): """ create: 用户收藏商品 destroy: 取消收藏商品 list: 显示收藏商品列表 retrieve: 根据商品id显示收藏详情 """ ``` ![BLOG_20190531_112959_41](/media/blog/images/2019/05/BLOG_20190531_112959_41.png "博客图集BLOG_20190531_112959_41.png") ![BLOG_20190531_112953_37](/media/blog/images/2019/05/BLOG_20190531_112953_37.png "博客图集BLOG_20190531_112953_37.png") ### 测试DRF文档登录 ![BLOG_20190531_112947_66](/media/blog/images/2019/05/BLOG_20190531_112947_66.png "博客图集BLOG_20190531_112947_66.png") http://127.0.0.1:8000/docs/#login-create 点击Interact,获取token ![BLOG_20190531_112939_12](/media/blog/images/2019/05/BLOG_20190531_112939_12.png "博客图集BLOG_20190531_112939_12.png") 得到的结果为 ```json { "refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTU1ODY3MDE0MCwianRpIjoiYTE1ZGYwNjc4NjRiNDlkODllNjBiZmNkNWM1ZmE1NGYiLCJ1c2VyX2lkIjoxfQ.66am2Kcn7ARQww1dKgpFqzZDrVdqiUPvPTNUArxNOTM", "access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNTU3OTc4OTQwLCJqdGkiOiJhYjI0MDBkMzcwMDE0ZWU3ODNlNTQ2Njc5ZjUzYmUxZCIsInVzZXJfaWQiOjF9.x07yCmI1NUdMxMJ2pN-EsewN4lPoMjKTz71fckS9X8E" } ``` 然后使用这个toekn去登陆 ![BLOG_20190531_112924_43](/media/blog/images/2019/05/BLOG_20190531_112924_43.png "博客图集BLOG_20190531_112924_43.png") 在查看收藏列表,就可以正常显示了 ![BLOG_20190531_112917_82](/media/blog/images/2019/05/BLOG_20190531_112917_82.png "博客图集BLOG_20190531_112917_82.png")
很赞哦! (1)
相关文章
文章交流
- emoji
当前用户
未登录,点击 登录专题目录
- 【Vue+DRF生鲜电商】01.课程结构介绍,开发环境搭建
- 【Vue+DRF生鲜电商】02.设置users、goods、trade、user_operation数据库并导入原始数据
- 【Vue+DRF生鲜电商】03.Restful API基础
- 【Vue+DRF生鲜电商】04.Vue项目结构介绍
- 【Vue+DRF生鲜电商】05.商品列表序列化普通方法
- 【Vue+DRF生鲜电商】06.DRF环境配置,使用Serializer类序列化商品列表
- 【Vue+DRF生鲜电商】07.序列化商品分页功能
- 【Vue+DRF生鲜电商】08.ViewSets & Routers显示商品列表
- 【Vue+DRF生鲜电商】09.使用DRF的filter过滤商品列表
- 【Vue+DRF生鲜电商】10.商品分类层级获取,Vue跨域请求商品分类
- 【Vue+DRF生鲜电商】11.Vue展示左侧分类、面包屑、排序、商品列表、分页
- 【Vue+DRF生鲜电商】12.用户登录之DRF Token认证登录原理和使用方法
- 【Vue+DRF生鲜电商】13.JWT用户认证原理配置,Vue登录接口调试
- 【Vue+DRF生鲜电商】14.用户注册发送短信验证码、登录字段验证
- 【Vue+DRF生鲜电商】15.用户注册使用信号量实现密码加密
- 【Vue+DRF生鲜电商】16.Vue中注册、退出功能交互
- 【Vue+DRF生鲜电商】17.DRF实现商品详情及热卖商品接口,Vue中显示商品详情和热卖
- 【Vue+DRF生鲜电商】18.用户收藏、取消收藏商品接口实现
- 【Vue+DRF生鲜电商】19.用户添加、删除收藏权限处理,根据商品id显示收藏,在Vue中实现收藏功能
- 【Vue+DRF生鲜电商】20.使用DRF自动生成文档的功能
- 【Vue+DRF生鲜电商】21.用户中心个人资料的展示,并在Vue中实现个人资料更新
- 【Vue+DRF生鲜电商】22.个人中心显示用户收藏功能,对收藏进行删除
- 【Vue+DRF生鲜电商】23.个人中心用户留言功能
- 【Vue+DRF生鲜电商】24.用户收货地址功能
- 【Vue+DRF生鲜电商】25.商品添加购物车接口功能,Vue和购物车联调
- 【Vue+DRF生鲜电商】26.使用Pycharm远程代码调试服务器Django代码
- 【Vue+DRF生鲜电商】26.订单接口功能,Vue和订单接口联调
- 【Vue+DRF生鲜电商】27.支付宝公钥,私钥,沙箱环境配置
- 【Vue+DRF生鲜电商】28.支付宝支付接口类解读,支付逻辑编辑
- 【Vue+DRF生鲜电商】29.线上服务支付宝接口和Vue联调,Django代理Vue运行
- 【Vue+DRF生鲜电商】30.首页轮播图、新品展示功能
- 【Vue+DRF生鲜电商】31.首页商品按分类显示推荐功能
- 【Vue+DRF生鲜电商】32.商品操作后计数更改,热搜榜关键字功能实现
- 【Vue+DRF生鲜电商】33.数据缓存、接口访问限速功能
- 【Vue+DRF生鲜电商】34.第三方登录(微博、qq和微信)之微博登录登录测试
- 【Vue+DRF生鲜电商】35.使用social-app-django集成第三方登录
猜你喜欢
-
【Vue+DRF生鲜电商】08.ViewSets & Routers显示商品列表
-
【CRM客户关系管理】15.动态ModelsForm增加自定义样式,修改初始化表单并提交
-
【CRM客户关系管理】17.多选字段filter_horizontal的实现,已选和未选数据展示
-
【keepalived、nginx】CentOS7使用keepalived实现nginx高可用架构
-
【Django在线教育平台】08.学习咨询表单ajax提交
-
Django使用message框架向模板中推送消息内容
-
【K8s+Docker技术全解】15.管理k8s核心资源方法
-
谷歌浏览器“您的连接不是私密连接解决办法”且无继续访问处理