python Django rest-framework 序列化步骤
django-rest-framework,是一套基于Django 的 REST 框架,是一个强大灵活的构建 Web API 的工具包。本文介绍一下 django-rest-framework 的简单使用。示例代码地址:https://github.com/jhhnjhhn/drf-test
环境
Python (3.6.2)
Django (1.11.5)
djangorestframework (3.6.4)
使用
1、创建项目
mkdir drf-test cd drf-test django-admin.py startproject drfTest cd drfTest/ python manage.py startapp api
2、修改配置文件
编辑 drtTest/setting.py 文件,在 INSTALLED_APPS 添加新应用。
INSTALLED_APPS = (
...
'rest_framework',
'api.apps.ApiConfig',
)
3、创建模型和数据库
打开 drtTest/models.py 文件,创建一个简单 Product 模型,字段包括 created、name、describe、price、isDelete。
class Product(models.Model):
created = models.DateTimeField(auto_now_add=True)
name = models.CharField(max_length=100, default='')
describe = models.CharField(max_length=500, default='')
price = models.FloatField()
isDelete = models.BooleanField(default=False) class Meta:
ordering = ('created',)
模型迁移,并同步数据库。
python manage.py makemigrations api
python manage.py migrate
4、创建序列化器
序列化器可以把模型转换成需要返回的 json、xml 类型数据。在 api 文件下创建 serializers.py 文件。
from rest_framework import serializers
from snippets.models import Product class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = ('id', 'created', 'name', 'describe', 'price', 'isDelete')
5、url配置
创建 api/urls.py 文件,用 Router 自动处理 url 和 view 的连接。
from django.conf.urls import url, include
from api import views # api url 配置
urlpatterns = [ ]
在 drtTest/urls.py 中链接 api 应用程序的 url。
from django.conf.urls import url, include
from api import views urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('api.urls')),
]
6、编写视图
编写视图有很多种方式,下面使用比较简单的两种:
1.使用 APIView
from rest_framework.views import APIView
from django.http import JsonResponse # Create your views here.
class GetMessageView(APIView):
# get 请求
def get(self, request):
# 获取参数数据
get = request.GET
# 获取参数 a
a = get.get('a')
print(a)
# 返回信息
d = {
'status': 1,
'message': 'success',
}
return JsonResponse(d)
api/urls.py 中配置 url
urlpatterns = [
url(r'^test/$', views.GetMessageView.as_view()),
]
终端输入命令,开启服务。
python manage.py runserver
打开浏览器访问 http://127.0.0.1:8000/test/?a=100 接口返回
{"status": 1, "message": "success"}
终端输出
100
[15/Sep/2017 02:39:55] "GET /test/?a=100 HTTP/1.1" 200 35
2.使用 viewsets
from rest_framework import viewsets
from rest_framework.response import Response
from rest_framework.decorators import detail_route, list_route
from api.serializers import ProductSerializer
from api.models import Product class ProductViewSet(viewsets.ModelViewSet):
queryset = Product.objects.all()
serializer_class = ProductSerializer @detail_route()
def changeName(self, request, *args, **kwargs):
get = request.GET
product = self.get_object()
product.name = get.get('newName')
product.save() return Response(product.name) @list_route()
def filterProducts(self, request):
products = Product.objects.filter(id__in=range(3))
serializer = ProductSerializer(products, many=True) return Response(serializer.data)
api/urls.py 配置 url,使用 Router 自动处理 url 和 view 的连接。
from rest_framework.routers import DefaultRouter
from api.views import ProductViewSet router = DefaultRouter()
router.register(r'product', views.ProductViewSet) # api url 配置
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^test/$', views.GetMessageView.as_view()),
]
终端输入命令,开启服务。
python manage.py runserver
python Django rest-framework 序列化步骤的更多相关文章
- [Django REST framework - 序列化组件、source、钩子函数]
[Django REST framework - 序列化组件.source.钩子函数] 序列化器-Serializer 什么是rest_framework序列化? 在写前后端不分离的项目时: 我们有f ...
- Django REST Framework序列化器
Django序列化和json模块的序列化 从数据库中取出数据后,虽然不能直接将queryset和model对象以及datetime类型序列化,但都可以将其转化成可以序列化的类型,再序列化. 功能需求都 ...
- Python Django rest framework
本节内容 Django rest framework 安装 Django rest framwwork 环境配置 简单举例说明 Django中使用 rest framework 1.1 安装 Djan ...
- Django REST framework序列化
一.简介 Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API. 官网:https://www.djang ...
- Django Rest framework序列化流程
目录 一 什么是序列化 二 Django REST framework配置流程之Serializer 三 Django REST framework配置流程之ModelSerializer 一 什么是 ...
- python Django rest-framework 创建序列化工程步骤
11创建项目 2创建应用 3stting添加应用(apps)-添加制定数据库-修改显示汉字(zh-hans)-上海时区(Asia/Shanghai) 4主路由添加子路由 5应用里创建子路由 6创建数据 ...
- python学习-- Django REST framework 序列化数据操作
一.为什么要返回json数据? 一般来说前端要用到从后台返回的数据来渲染页面的时候,这时候后台就需要向前端返回json类型的数据,简单直观便于理解 ,就类似于 {"xxx":{[& ...
- 02 Django REST Framework 序列化
01-创建序列化类 # 方式一: publish_list = models.Publish.objects.all() # 导入序列化组件 from django.core import seria ...
- Django REST Framework 序列化和校验 知识点
DRF序列化 Django ORM对象 --> JSON格式的数据 序列化 JSON格式的数据 --> Django ORM数据 反序列化 需要两个工具: from rest_framew ...
- [python]django rest framework写POST和GET接口
版本声明 python3.6.5 Django-2.0.6 djangorestframework-3.8.2 mysqlclient-1.3.12 1.写一个登录接口,不多说,直接上代码 login ...
随机推荐
- Linux系统中文件定位与查找
Linux系统中文件查找 关键词 文件查找 | find | locate 本文主要介绍有关文件查找的两个命令——find和locate,以及压缩打包的命令——compress, gzip,bzip2 ...
- Sums of Digits CodeForces - 509C (贪心,模拟)
大意: 一个未知严格递增数组$a$, 给定每个数的数位和, 求$a[n]$最小的数组$a$ #include <iostream> #include <algorithm> # ...
- python记录_day13 内置函数
详细链接:https://www.processon.com/mindmap/5bdbc4bee4b0878bf42089fb
- leetcode-algorithms-11 Container With Most Water
leetcode-algorithms-11 Container With Most Water Given n non-negative integers a1, a2, ..., an , whe ...
- Python Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat)
在windows 平台下,当python使用以下方式安装时,可能出现以下错误: > python setup.py install error: Microsoft Visual C++ 10. ...
- 51nod-1181-两次筛法
1181 质数中的质数(质数筛法) 题目来源: Sgu 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 如果一个质数,在质数列表中的编号也是质数,那么就 ...
- ActiveMQ broker 非持久化queue消息的入队、出队和应答
消息入队:Queue.doMessageSend 消息分发:Queue.doActualDispatch 消息发送:TransportConnection.dispatch broker收到consu ...
- Android应用启动时Activity被创建两次
项目需要使用到播放器,用开源的ijkplayer播放器改装. 但是在调试过程中Activity的OnCreate()被调用两次,调试时直接连接手机调试,有时候又不一定是两次. 后来偶尔看到一句话 “当 ...
- CSS三列布局之左右宽度固定,中间元素自适应问题
最近学到了几种关于左右固定宽度,中间自适应的三列布局的方法,整理了一下,在这里跟大家一起分享分享,其中有什么不足的还望各位给指导指导哈. 首先我想到的是float——浮动布局 使用浮动,先渲染左右两个 ...
- Nginx隐藏版本号操作
1.定位当前nginx所使用的配置文件 ps -ef |grep nginx 如果-c参数.则-c文件即为nginx当前所用配置文件,如上图中配置文件即为/usr/local/nginx/conf/n ...