文章目录

  • 一、使用restful
    • 1.了解restful-api
    • 2.新建一个项目并安装django-framework
    • 3.使用指定方式进行增删改查
  • 二、序列化后的接口

一、使用restful

1.了解restful-api

为了使前后端分离,我们开始写数据接口,基于restful风格的一种接口,Django中含有一个优秀的框架Framework。

restful-api规范要求

  • get 获取数据
  • post 添加数据
  • put 全部更新数据
  • patch 局部更新数据
  • delete 删除数据

数据传输基于json数据形式。

2.新建一个项目并安装django-framework

①创建项目并且注册应用

Django-admin startproject restful
python manage.py stratapp api

②创建一个模型并且数据迁移

from django.db import modelsclass Category(models.Model):name=models.CharField(max_length=32,verbose_name='文章分类')class Article(models.Model):title=models.CharField(verbose_name='标题',max_length=32)summary=models.CharField(verbose_name='简介',max_length=32)content=models.TextField(verbose_name='内容')category=models.ForeignKey(verbose_name='分类',to='Category',on_delete=models.CASCADE)

命令行执行

python manage.py makemigrations
python manage.py migrate

③安装framework

pip install django-framework

django中的framework相当于一个应用,需要注册

3.使用指定方式进行增删改查

views.py

from django.shortcuts import render
from django.http import JsonResponse, HttpResponse
from api import models
from rest_framework.views import APIView
from rest_framework.response import Response
from django.forms.models import model_to_dictclass DrfCategoryView(APIView):def get(self,request,*args,**kwargs):# 拿所有数据/拿一条数据pk=kwargs.get('pk')if not pk:queryset=models.Category.objects.all().values('id','name')data=list(queryset)return Response(data)data=models.Category.objects.filter(id=pk).first()#查出来是对象print(data)if data:data=model_to_dict(data)return Response(data)def post(self, request, *args, **kwargs):'''增加一条分类信息'''# 有的数据会用name='ada'&age="15"拼接,那么request.post会获取不到这种类型的值,            request.data会自动转换为字典格式的值# print(request.data)models.Category.objects.create(**request.data)#将信息打散再添加return Response('成功')def delete(self,request,*args,**kwargs):pk=kwargs.get('pk')models.Category.objects.filter(id=pk).first().delete()return Response('删除成功')def put(self, request, *args, **kwargs):pk=kwargs.get('pk')models.Category.objects.filter(id=pk).update(**request.data)return Response('更新成功')

url.py文件

urlpatterns = [path('admin/', admin.site.urls),re_path('^drf/category/$', views.DrfCategoryView.as_view()),re_path('^drf/category/(?P<pk>\d+)/$', views.DrfCategoryView.as_view()),
]

通过postman来查看



二、序列化后的接口

使用序列化可以在进行数据效验和序列化。

序列化后的增删改查接口

from rest_framework import serializers
from django.shortcuts import render
from django.http import JsonResponse, HttpResponse
from api import models
from rest_framework.views import APIView
from rest_framework.response import Response
from django.forms.models import model_to_dictclass NewCategorySerializer(serializers.ModelSerializer):class Meta:model = models.Category # 指定类# fields = "__all__" # 所有字段fields = ['id', 'name']# 展示的字段class NewCategoryView(APIView):def get(self, request, *args, **kwargs):# 拿所有数据/拿一条数据pk = kwargs.get('pk')if not pk:data = models.Category.objects.all()  # 查出来是querysetser = NewCategorySerializer(instance=data, many=True)return Response(ser.data)data = models.Category.objects.filter(id=pk).first()  # 查出来是对象ser = NewCategorySerializer(instance=data, many=False)print(ser.data)if data:data = model_to_dict(data)return Response(data)def post(self, request, *args, **kwargs):#    增加一条分类信息ser = NewCategorySerializer(data=request.data)if ser.is_valid():# 序列化ser.save()return Response(ser.data)return Response(ser.errors)def put(self, request, *args, **kwargs):pk = kwargs.get('pk')c_object = models.Category.objects.filter(id=pk).first()ser = NewCategorySerializer(instance=c_object, data=request.data)if ser.is_valid():ser.save()return Response(ser.data)return Response(ser.errors)def delete(self, request, *args, **kwargs):pk = kwargs.get('pk')models.Category.objects.filter(id=pk).first().delete()return Response('删除成功')

urls.py

re_path('^new/category/$', views.NewCategoryView.as_view()),
re_path('^new/category/(?P<pk>\d+)/$', views.NewCategoryView.as_view()),

推荐将序列化的类重新建一个py文件

Framework(一):了解django-framework及其序列化接口相关推荐

  1. 关于Django+Framework的最完整面试题(2)

    文章目录 一.框架对比 1.Django.Flask.Tornado框架对比 2. WSGI / uwsgi/ uWSGI区分 二.Django框架 3.介绍一下FBV和CBV 4.如何给CBV的程序 ...

  2. Android Framework中的Application Framework层介绍

    Android的四层架构相比大家都很清楚,老生常谈的说一下分别为: Linux2.6内核层,核心库层,应用框架层,应用层.我今天重点介绍一下应用框架层Framework. Framework层为我们开 ...

  3. Java序列化接口的作用总结1

    一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做"持久化". 把堆内存中的对象的生命周期延长,存入硬盘,做持久化操作.当下次再需要这个对象的时候,我们不用new了,直接从 ...

  4. .NET Framework Client Profile/.net framework 客户端配置

    .NET Framework Client Profile .NET Framework Client Profile 是完整版 .NET Framework 3.5 SP1 的子集,面向客户端应用程 ...

  5. Java序列化接口Serializable接口的作用总结

    一.Java序列化接口Serializable的作用: 一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做"持久化". 对象的默认序列化机制写入的内容是:对象的类,类签名, ...

  6. 运行Xcode时出现 Lazy loading NSBundle MobileCoreServices.framework和 Loaded MobileCoreServices.framework

    运行Xcode时出现 Lazy loading NSBundle MobileCoreServices.framework和 Loaded MobileCoreServices.framework 解 ...

  7. Mybatis逆向工程的pojo实现序列化接口代码

    情景如下,这两天在做一个分布式的项目,使用了Alibaba的dubbo作为通信工具,zookeeper作为register,由于dubbo是基于socket协议的,所以在进行pojo传输的时候报了异常 ...

  8. Java序列化接口的作用总结

    一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做"持久化". 把堆内存中的对象的生命周期延长,存入硬盘,做持久化操作.当下次再需要这个对象的时候,我们不用new了,直接从 ...

  9. Django 缓存、序列化、信号

    一,缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcac ...

  10. 【java基础,IO合集】文件流、高级流(缓冲流、对象流)、 序列化接口java.io.Serrializable

    目录 文件流 1 块读写的文件复制操作 2 文件输出流-覆盖模式 3 文件输出流-追加模式 4 文件输出流-读取文本数据 高级流 1  流连接示意图 2 缓冲流 2.1 使用缓冲流完成文件复制操作 2 ...

最新文章

  1. 从 SSLTLS 的底层实现来看 网络安全的庞大复杂体系
  2. 用Python实现深度学习框架
  3. [BZOJ 1221][HNOI2001]软件开发(费用流)
  4. 「 每日一练,快乐水题 」1984. 学生分数的最小差值
  5. C#——Ellipse(椭圆)类[继承Ellipse(椭圆)类重构Circle(圆)类]
  6. mysql 5.7.13安装_安装MySQL 5.7.13
  7. B. Mashmokh and ACM
  8. C#中的?和?? 可空类型和空值判断
  9. java double 存储_Java语言中:float、double在内存中存储方式
  10. C# TextBox输入数字 TextBox输入限制 TextBox输入字符 KeyPress
  11. UML 核心元素之参与者
  12. Starvis星光全彩摄像机技术
  13. 使用Git将本地文件提交到远程仓库
  14. 爬虫:爬取糗事百科数据
  15. 《MongoDB在信息资源共享建设的应用实践》
  16. Windows补丁查找及安装
  17. 怎么监控Linux流量,linux下监控流量
  18. 神策H5全埋点注意事项
  19. 万哥 给我发几个图片 私聊
  20. 使用NLP和ML来提取和构造Web数据

热门文章

  1. Linux之SELinux的介绍以及用法
  2. 蚁族和IT无关,拒绝蜗居
  3. 苹果将进一步降低iPhone的定价,趁势狙击安卓手机
  4. 美联储SR 11-7:模型风险管理指南(Guidance on Model Risk Management)-万字收藏
  5. 中国自身免疫药市场趋势报告、技术动态创新及市场预测
  6. Windows下弱网模拟工具Clumsy
  7. c语言lna,恩智浦半导体推出SiGe:C低噪声放大器(LNA)
  8. 从360安全卫士中提取网络速度监控
  9. 利用数码测色计 来获取需求原型图中的颜色,设置为开发中的颜色
  10. ADO对象之Recordset用法总结: