使用Restframework+django_filters快速实现Django的API
2018-08-04 11:14
901 查看
环境:
[code]pip install restframework=3.4.6 pip install django_filter
project->settings.py
[code] INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'market', 'rest_framework', # 注册app ] # 修改配置 rest_framework REST_FRAMEWORK = { # 将 restframework 默认的用户认证取消 'DEFAULT_AUTHENTICATION_CLASS': (), # 筛选过滤数据 'DEFAULT_FILTER_BACKENDS':( 'rest_framework.filters.DjangoFilterBackend', 'rest_framework.filters.SearchFilter', ), }
app->urls.py
[code] from django.conf.urls import url from rest_framework.routers import SimpleRouter from market import views router = SimpleRouter() router.register(r'^goods', views.GoodsApi) urlpatterns = [ url(r'^index/', views.index, name='index'), ] urlpatterns += router.urls
app->views.py
[code] class GoodsApi(mixins.ListModelMixin, # get mixins.CreateModelMixin, # post mixins.RetrieveModelMixin, # 单个查询 mixins.UpdateModelMixin, # 修改 put 全部 patch 部分 mixins.DestroyModelMixin, # 删除 delete viewsets.GenericViewSet): """商品 API """ # 从数据库中获取的数据 queryset = Goods.objects.filter(good_id__lt=200) # 数据序列化器, 将查询的数据进行处理,返回格式良好的数据 serializer_class = GoodSerializer # 自定义的过滤器,对数据进行筛选 filter_class = GoodsFilter
utils->serializers.py
[code] from rest_framework import serializers from market.models import Goods class GoodSerializer(serializers.ModelSerializer): """自定义商品序列化器""" class Meta: model = Goods # 对获取到的数据进行数据格式化 def to_representation(self, instance): data = super().to_representation(instance) category_id= data.pop('category') data['brand_id'] = brand_id return data
utils->filters.py
[code] import django_filters from rest_framework import filters from market.models import Goods, GoodsBrand, GoodsCategory class GoodsFilter(filters.FilterSet): """用于商品查询的过滤器""" class Meta: model = Goods # 用于查询的字段 fields = '__all__' # 定义查询的方法 contains:模糊查询; gte:大于等于; lte:小于等于 # url : /market/goods/?good_id_lte=160& 添加其他条件 good_id = django_filters.CharFilter('good_id', lookup_expr='exact') good_name = django_filters.CharFilter('good_name', lookup_expr='icontains') good_category_id = django_filters.CharFilter('category_id', lookup_expr='exact') good_brand_id = django_filters.CharFilter('brand_id', lookup_expr='exact') good_amount_lte = django_filters.CharFilter("real_amount", lookup_expr='lte') good_amount_gte = django_filters.CharFilter("real_amount", lookup_expr='gte')
接口访问的方法说明
GET 请求
[code] GET /market/goods/? + params
params
[code] good_id=<id> # 获取 id 的商品 good_name=<name> # 模糊查询 获取该名字的商品 good_category_id=<id> # 商品分类id good_brand_id=<id> # 商品品牌 id good_amount_lte=<price> # 获取商品价格小于 price 的商品 good_amount_gte=<price> # 获取商品价格大于 price 的商品 # 可以多个条件一起查询 good_amount_lte=<price>&good_amount_gte=<price>
阅读更多
相关文章推荐
- Django REST framework笔记一之简易JsonAPI搭建(可使用)
- django 中api使用之django-rest-framework
- 使用Django rest framework api时,客户端返回结果为html标签
- 使用Django REST Framework来快速实现API调用服务——下篇(编写API服务)
- 使用Django REST Framework来快速实现API调用服务——上篇(运行环境和模型层)
- python调试django-rest-framework API的小工具--httpie
- django使用rest_framework
- Django-Rest-Framework 教程: 5. 提高关联性和超链接API
- Django REST framework API
- django-rest-framework 使用例子
- Django-Rest-Framework 教程: 3. 使用 class based views
- 使用Jersey快速实现rest风格的webservice
- 使用Spring Boot&Swagger快速构建REST API并生成优美的API文档
- 使用Solr快速实现Django的全文搜索[转]
- 使用Python Falcon框架快速实现简单API
- piston-在django中实现REST风格的API
- Django-Rest-Framework 教程: 快速入门
- django-rest-framework 快速开始
- Django REST Framework Tutorial 5:关系与超链接API(中文版教程)by hillfree
- 第8章-使用Express.js和Hapi构建Node.js-REST-API服务-8.3.使用Express和Mongoskin实现REST API服务器