Framework(一):了解django-framework及其序列化接口
文章目录
- 一、使用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及其序列化接口相关推荐
- 关于Django+Framework的最完整面试题(2)
文章目录 一.框架对比 1.Django.Flask.Tornado框架对比 2. WSGI / uwsgi/ uWSGI区分 二.Django框架 3.介绍一下FBV和CBV 4.如何给CBV的程序 ...
- Android Framework中的Application Framework层介绍
Android的四层架构相比大家都很清楚,老生常谈的说一下分别为: Linux2.6内核层,核心库层,应用框架层,应用层.我今天重点介绍一下应用框架层Framework. Framework层为我们开 ...
- Java序列化接口的作用总结1
一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做"持久化". 把堆内存中的对象的生命周期延长,存入硬盘,做持久化操作.当下次再需要这个对象的时候,我们不用new了,直接从 ...
- .NET Framework Client Profile/.net framework 客户端配置
.NET Framework Client Profile .NET Framework Client Profile 是完整版 .NET Framework 3.5 SP1 的子集,面向客户端应用程 ...
- Java序列化接口Serializable接口的作用总结
一.Java序列化接口Serializable的作用: 一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做"持久化". 对象的默认序列化机制写入的内容是:对象的类,类签名, ...
- 运行Xcode时出现 Lazy loading NSBundle MobileCoreServices.framework和 Loaded MobileCoreServices.framework
运行Xcode时出现 Lazy loading NSBundle MobileCoreServices.framework和 Loaded MobileCoreServices.framework 解 ...
- Mybatis逆向工程的pojo实现序列化接口代码
情景如下,这两天在做一个分布式的项目,使用了Alibaba的dubbo作为通信工具,zookeeper作为register,由于dubbo是基于socket协议的,所以在进行pojo传输的时候报了异常 ...
- Java序列化接口的作用总结
一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做"持久化". 把堆内存中的对象的生命周期延长,存入硬盘,做持久化操作.当下次再需要这个对象的时候,我们不用new了,直接从 ...
- Django 缓存、序列化、信号
一,缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcac ...
- 【java基础,IO合集】文件流、高级流(缓冲流、对象流)、 序列化接口java.io.Serrializable
目录 文件流 1 块读写的文件复制操作 2 文件输出流-覆盖模式 3 文件输出流-追加模式 4 文件输出流-读取文本数据 高级流 1 流连接示意图 2 缓冲流 2.1 使用缓冲流完成文件复制操作 2 ...
最新文章
- 数据库水平切分(MyCat分片Join)
- vb.net中类型转换
- php escape undfine,PHP中处理 undefined variable的方法 | Soo Smart!
- 使用ACME部署生成阿里云免费HTTPS证书
- Spark在集群上执行代码案例(中文切词)
- LBP算法,空间金字塔 文献阅读报告《基于差分量化局部二值模式的人脸反欺诈算法研究》
- 当当网图书爬虫与数据分析
- 人工势场法--路径规划--原理--matlab代码
- 【程序人生】从外包到大厂,你知道我这一个月是怎么过的吗?
- kali实现ARP断网
- java opencv 图片读取,边缘化,写出图片操作
- EM2 MP1 Vowel and Consonant Teacher:Ashley
- 化工原理 --- 流体流体 --- 习题课及复习
- Visual C++游戏编程基础之透明半透明效果
- C语言逻辑操作符的巧妙用法:an anagram of a palindrome
- mysql中的四种注释
- 网络防火墙怎么选型,你以为的还对吗(三层选型)
- 云计算通识--云计算部署形式及应用
- 03 并发用户数怎么计算么
- docker 制作 jar 镜像