文章目录

  • 一、使用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. 数据库水平切分(MyCat分片Join)
  2. vb.net中类型转换
  3. php escape undfine,PHP中处理 undefined variable的方法 | Soo Smart!
  4. 使用ACME部署生成阿里云免费HTTPS证书
  5. Spark在集群上执行代码案例(中文切词)
  6. LBP算法,空间金字塔 文献阅读报告《基于差分量化局部二值模式的人脸反欺诈算法研究》
  7. 当当网图书爬虫与数据分析
  8. 人工势场法--路径规划--原理--matlab代码
  9. 【程序人生】从外包到大厂,你知道我这一个月是怎么过的吗?
  10. kali实现ARP断网
  11. java opencv 图片读取,边缘化,写出图片操作
  12. EM2 MP1 Vowel and Consonant Teacher:Ashley
  13. 化工原理 --- 流体流体 --- 习题课及复习
  14. Visual C++游戏编程基础之透明半透明效果
  15. C语言逻辑操作符的巧妙用法:an anagram of a palindrome
  16. mysql中的四种注释
  17. 网络防火墙怎么选型,你以为的还对吗(三层选型)
  18. 云计算通识--云计算部署形式及应用
  19. 03 并发用户数怎么计算么
  20. docker 制作 jar 镜像

热门文章

  1. 北京冬奥会开幕式震撼刷屏,这些黑科技立了大功
  2. 在Linux防火墙上过滤外来的ICMP timestamp和禁止Traceroute探测
  3. Java基础01 注释
  4. 亚马逊账号安全 视频审核或将替代二审
  5. SSH远程登录配置过程
  6. java创建完全二叉树
  7. SpringBoot+Vue项目启动
  8. ElasticSearch设置日志保存时间-自动删除
  9. LEGO® Education BricQ 乐高教育发布BricQ趣动系列套装
  10. Hbuilder创建app,夜神模拟器调试