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 ...
随机推荐
- js删除数组中元素的方法
一.清空数组 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即被清空了 二.删 ...
- js中BOM与DOM的概念与区别
1.BOM 浏览器对象模型 提供了独立于内容而与浏览器窗口进行交互的对象.描述了与浏览器进行交互的方法和接口,可以对浏览器窗口进行访问和操作,譬如可以弹出新的窗口,改变状态栏中的文本,对Cookie的 ...
- ubuntu开启慢日志
ubuntu 开启mysql日志记录 1.找到mysql的配置文件sudo vim /etc/mysql/my.cnf将下面两行的#去掉#general_log_file = /var/log/mys ...
- WDA基础六:字段,表等visiable,enable,read_only控制
今天主要讲一下布局控制:(visiable,enable,read_only) visiable:可见性,控制字段,组件,分组等是否现实在界面上.一般按条件来控制隐藏的可以在CONTEXT NODE里 ...
- HTML 5 <span> 标签
标签定义及使用说明 <span> 用于对文档中的行内元素进行组合. <span> 标签没有固定的格式表现.当对它应用样式时,它才会产生视觉上的变化.如果不对 <span& ...
- Mybatis异常There is no getter for property named 'XXX' in 'class java.lang.String'
1.当入参为 string类型时 (包括java.lang.String.) 我们使用#{xxx}引入参数.会抛异常There is no getter for property named 'XX ...
- TP5+jquery即点既改
//表单 {volist name="date" id="v"}<tr id="{$v.id}"> <td>< ...
- InnoDB存储引擎介绍-(4)Checkpoint机制二
原文链接 http://www.cnblogs.com/chenpingzhao/p/5107480.html 一.简介 思考一下这个场景:如果重做日志可以无限地增大,同时缓冲池也足够大,那么是不需要 ...
- 使用IntelliJ IDEA 配置Maven(转)
原文地址:使用IntelliJ IDEA 配置Maven 1. 下载Maven 官方地址:http://maven.apache.org/download.cgi 解压并新建一个本地仓库文件夹 2.配 ...
- ActiveMQ producer不断发送消息,会导致broker内存耗尽吗?
http://activemq.apache.org/my-producer-blocks.html 回答了这个问题: ActiveMQ 5.x 支持Message Cursors,它默认把消息从内存 ...