官方网站:

https://www.django-rest-framework.org/

翻译网站:
https://q1mi.github.io/Django-REST-framework-documentation/

RESTful 在Django框架中实现的插件:rest_framework

在Django框架中RESTful主要表现在序列化的实现、视图函数的实现和urls路由的实现,在这里我们可能会完全推翻Django基础知识中实现代码的方式。

1. 安装:

pip install djangorestframework

2. 在Django中的配置:

  1. settings.py中INSTALLED_APPS添加['rest-framework',]

  2.在应用中创建Serializers.py

3.Serializers中三个基础的序列化类:

  • serializers.HyperLinkedModelSerializer:序列化模型,并添加超链接
  • serializers.Serializer:手动添加序列化
  • serializers.ModelSerializer:自动序列化,只需要把模型导入,属性many=True 表示可序列化多个模型

3.1 。serializers.HyperLinkedModelSerializer:

# models.py
from django.db import models class Books(models.Model):
b_name = models.CharField(max_length=30)
b_price = models.FloatField(default=1) def to_dict(self):
return {'id':self.id, 'b_name':self.b_name, 'b_price':self.b_price}

models.py

# urls.py
from django.urls import include, path
from rest_framework import routers from REST import views router = routers.DefaultRouter()
router.register(r'Books', views.BookViewSet) urlpatterns = [
path('', include(router.urls)),
]

urls.py

from django.shortcuts import render

# Create your views here.
from rest_framework import viewsets from REST.models import Books
from REST.serializers import BookSerializer class BookViewSet(viewsets.ModelViewSet):
queryset = Books.objects.all()
serializer_class = BookSerializer

views.py

# serializers.py
from rest_framework import serializers from REST.models import Books class BookSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Books
fields = ('url', 'b_name','b_price')

serializers.py

models.py : 建立模型

urls.py :建立路由

views.py :建立序列化类视图

serializers.py :序列化

3.2 。serializers.Serializer

class Person(models.Model):
p_name = models.CharField(max_length=32)
p_age = models.IntegerField(default=1)
p_sex = models.BooleanField(default=False) class Meta:
db_table = 'Person'

models.py

from django.urls import  path
from REST import views urlpatterns = [
path('person', views.PersonView.as_view()),
]

urls.py

class PersonView(View):
def post(self,request):
p_name = request.POST.get('p_name')
p_age = request.POST.get('p_age')
print('*********',p_name) person = Person()
person.p_name = p_name
person.p_age = p_age
print('***##***', p_name)
person.save() person_serializer = PersonSerializer(person)
return JsonResponse(person_serializer.data)

views.py

class PersonSerializer(serializers.Serializer):
# 和模型中的字段对应
id = serializers.IntegerField(read_only=True) # 表示只读
p_name = serializers.CharField(max_length=32)
p_age = serializers.IntegerField(default=1)
p_sex = serializers.BooleanField(default=False) # 进行对象的创建
def create(self,validated_data):
return Person.objects.create(**validated_data) # 对象的更新
def update(self, instance, validated_data):
# 分别拿到对象,并对对象进行更新
instance.p_name = validated_data.get('p_name',instance.p_name)
print('@@@@@@')
instance.p_age = validated_data.get('p_age', instance.p_age)
instance.p_sex = validated_data.get('p_sex', instance.p_sex)
instance.save() return instance

serializers.py

3.3 。serializers.ModelSerializer

class StudentSerializer(serializers.ModelSerializer):
class Meta:
model = Students
fields = ('s_name', 's_age')

serializers.py

(省略了models.py,urls.py,views.py,和serializers.Serializer类似)ModelSerializer简单,常用!!!

初撩Django-RESTful-rest_framework序列化(将模型序列化为JSON)的更多相关文章

  1. @JsonInclude(Include.NON_NULL) resttemplate 传递实体参数时 序列化为json时 空字符串不参与序列化

    @JsonInclude(Include.NON_NULL) resttemplate 传递实体参数时 序列化为json时 空字符串不参与序列化 https://www.cnblogs.com/sup ...

  2. 【Django】rest_framework 序列化自定义替换返回值

    # 序列化设置 class PagerSerialiser(serializers.ModelSerializer): name = serializers.CharField(source=&quo ...

  3. django restful framework 一对多方向更新数据库

    目录 django restful framework 序列化 一 . 数据模型: models 二. 序列化: serializers 三, 视图: views 四, 路由: urls 五. 测试 ...

  4. 在django restful framework中设置django model的property

    众所周知,在django的model中,可以某些字段设置@property和setter deleter getter,这样就可以在存入数据的时候进行一些操作,具体原理请参见廖雪峰大神的博客https ...

  5. django 3.1 序列化讲述

    序列化Django对象¶ Django的序列化框架提供了一种将Django模型"翻译"为其他格式的机制.通常,这些其他格式将基于文本,并用于通过电线发送Django数据,但是序列化 ...

  6. python 序列化及其相关模块(json,pickle,shelve,xml)详解

    什么是序列化对象? 我们把对象(变量)从内存中编程可存储或传输的过程称之为序列化,在python中称为pickle,其他语言称之为serialization ,marshalling ,flatter ...

  7. Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式

    Python第十四天 序列化  pickle模块  cPickle模块  JSON模块  API的两种格式 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Py ...

  8. python序列化及其相关模块(json,pickle,shelve,xml)详解

    什么是序列化对象? 我们把对象(变量)从内存中编程可存储或传输的过程称之为序列化,在python中称为pickle,其他语言称之为serialization ,marshalling ,flatter ...

  9. 超高性能的json序列化之MVC中使用Json.Net

    先不废话,直接上代码 Asp.net MVC自带Json序列化 /// <summary> /// 加载组件列表 /// </summary> /// <param na ...

随机推荐

  1. 运用pool进程池启动大量子进程

    # Pool进程池类 from multiprocessing import Pool import os import time import random def run(index): prin ...

  2. linux CentOS7 nginx nginx-rtmp-module搭建直播

    直播配置 1. 安装 Nginx 依赖软件 yum -y install gcc gcc-c++ autoconf automake make yum -y install zlib zlib-dev ...

  3. cytoscape.js 教程

    因为数据要展示双向关系,最终选用了cytoscape.js. 效果如图,echarts只能显示单项数据关系. 据我理解,这个插件分两种,一种是基于jquery的,另一种是原声的. 基于jquery是加 ...

  4. shell脚本编程测试类型上

    一bash的条件测试 判断某需求是否满足,需要由测试机制来实现.专用的测试表达式需要由测试命令辅助完成测试过程. 评估布尔声明,以便用在条件性执行中.若真,则返回0:若假,则返回1. 测试命令:• t ...

  5. 【LeetCode 32】最长有效括号

    题目链接 [题解] 设dp[i]表示以第i个字符结尾的最长有效括号的长度. 显然只要考虑s[i]==')'的情况 则如果s[i-1]=='(',则dp[i] = dp[i-2]+2; 如果s[i-1] ...

  6. c#如何写服务,打包和卸载服务

    Service.cs  每隔一分钟进行一次数据操作 public Service1()        {            InitializeComponent();            Sy ...

  7. 让vue用于小程序setData方法

    setData:function(obj){ let that = this; let keys = []; let val,data; Object.keys(obj).forEach(functi ...

  8. 2017 NOIp 初赛体验

    很菜...我还是太蒟蒻了. d 老师太强了... 应该能有七十几分 初赛稳了 Update: 五十几分...

  9. jq动画效果慢慢滚动到固定位置

    function contentTop(top){ $('body,html').animate({ scrollTop: top }, 500 ); } 获取元素top传入即可 contentTop ...

  10. 爬取猎聘大数据岗位相关信息--Python

    猎聘网站搜索大数据关键字,只能显示100页,爬取这一百页的相关信息,以便做分析. __author__ = 'Fred Zhao' import requests from bs4 import Be ...