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 ...
随机推荐
- leetcode-algorithms-1 two sum
leetcode-algorithms-1 two sum Given an array of integers, return indices of the two numbers such tha ...
- hdu-2865-polya+dp+矩阵+euler函数
Birthday Toy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- poj 1080 基因组(LCS)
Human Gene Functions Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 19376 Accepted: ...
- ASP.NET 后台页面无法识别服务器控件ID
在学习asp.net 的时候 发现有个页面服务器控件无法识别,提示未知元素 解决方法 将不能识别服务器控件ID 的后台文件 类名改写,重新生成一次. 然后再改回来就可以了.
- oracle查询视图归属于哪个用户
select OWNER from ALL_VIEWS where VIEW_NAME='视图名';
- 网络编程socketserver实现并发
import socketserver import struct import json import os class FtpServer(socketserver.BaseRequestHand ...
- rsyslog+loganalyzer远程日志系统搭建教程(CentOS6.8)
一.说明 本文主要是对“CentOS 6.7搭建Rsyslog日志服务器”进行整理,同时在本地进行环境搭建,验证在CentOS6.8上的正确性. 二.安装配置rsyslog 1.清空iptables关 ...
- PHP配置方法
由于php是一个zip文件(非install版),安装较为简单,解压就行.把解压的 php5.2.1-Win32重命名为 php5.并复制到C盘目录下.即安装路径为 c:\php5 1 找到php目录 ...
- Spring boot异常统一处理方法:@ControllerAdvice注解的使用、全局异常捕获、自定义异常捕获
一.全局异常 1.首先创建异常处理包和类 2.使用@ControllerAdvice注解,全局捕获异常类,只要作用在@RequestMapping上,所有的异常都会被捕获 package com.ex ...
- lombok @Slf4j注解
背景知道有这么个东西,是因为项目中用到了@Slf4j注解. lombok库提供了一些注解来简化java代码 官网:http://projectlombok.org/ 查看lombok所有api:htt ...