当前位置: 首页 > news >正文

建站seo赚钱天津网络推广培训

建站seo赚钱,天津网络推广培训,海报制作app,网站开发毕设需求分析什么是DRF? DRF即Django REST framework的缩写,官网上说:Django REST framework是一个强大而灵活的工具包,用于构建Web API。 简单来说:通过DRF创建API后,就可以通过HTTP请求来获取、创建、更新或删除数据(…

什么是DRF?

在这里插入图片描述

DRFDjango REST framework的缩写,官网上说:Django REST framework是一个强大而灵活的工具包,用于构建Web API
简单来说:通过DRF创建API后,就可以通过HTTP请求来获取、创建、更新或删除数据(CRUD)。

那么为什么要构建API呢?
在Django中,我们通过model-view-template实现了后端和前端的通信。但前端未必是用Django的template实现的,也可以用单独的前端框架(如vue)实现。这个时候就需要一种统一的方法在前后端通信。目前一种成熟的方法就是API。

那么什么是REST?

如果你对DRF是用于构建Web API的说法已经满意了,就可以跳过这段了。
那么什么是REST?
REST(即 REpresentational State Transfer)是一种风格,用于在网络上的计算机系统之间提供标准,使系统更容易相互通信。特点是无状态和分离客户端和服务器。

也就是说,当你的API遵循了这种风格时,就可以称为RESTful API
关于如何设计出符合REST风格的API,可以参考阮一峰的《RESTful API 设计指南》

那么用DRF实现的就是RESTful API吗?其实DRF没有强制实现。
在官网的TOPIC,REST --> Hypermedia,Hateoas中有这样一段话:

首先,免责声明。“Django REST 框架”这个名字是在 2011 年初决定的,选择它只是为了确保开发人员很容易找到这个项目。在整个文档中,我们尝试使用更简单、技术上正确的术语“Web API”。

官网的一个例子

看一个官网的例子来感受一下。
创建一个简单的API,允许管理员查看和编辑系统中的用户和组。

详细的过程推荐看官网:https://www.django-rest-framework.org/tutorial/quickstart/

配置项目

首先安装drf:
pip install djangorestframework

然后创建一个Django项目并创建应用:

mkdir tutorial
cd tutorialdjango-admin startproject tutorial .
cd tutorial
django-admin startapp quickstart

这里创建项目和应用的方式有点不同,按照他的这个就行。

settings.py中的INSTALLED_APPS添加rest_framework:

INSTALLED_APPS = [...'rest_framework',
]

同步数据库
python manage.py migrate
创建超级用户admin,密码设置为password123:
python manage.py createsuperuser --email admin@example.com --username admin

创建API

接下来就是重点,我们要创建一个序列化程序将model转换成json格式。

1.创建序列化类
quickstart应用下面创建serializers.py

from django.contrib.auth.models import User, Group
from rest_framework import serializersclass UserSerializer(serializers.HyperlinkedModelSerializer):class Meta:model = Userfields = ['url', 'username', 'email', 'groups']class GroupSerializer(serializers.HyperlinkedModelSerializer):class Meta:model = Groupfields = ['url', 'name']

序列化类(Serializer)将Model转换为序列化的JSON对象
上面构建了User和Group的序列化类。序列化类看起来和django的Form很像。

2.创建view
quickstart/views.py

from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from rest_framework import permissions
from tutorial.quickstart.serializers import UserSerializer, GroupSerializerclass UserViewSet(viewsets.ModelViewSet):"""API endpoint that allows users to be viewed or edited."""queryset = User.objects.all().order_by('-date_joined')serializer_class = UserSerializerpermission_classes = [permissions.IsAuthenticated]class GroupViewSet(viewsets.ModelViewSet):"""API endpoint that allows groups to be viewed or edited."""queryset = Group.objects.all()serializer_class = GroupSerializerpermission_classes = [permissions.IsAuthenticated]

我们使用了ModelViewSet来快速构建一组view。由于背后实现了很多方法,这看起来有些像魔法。

3.配置url
tutorial/urls.py中:

from django.urls import include, path
from rest_framework import routers
from tutorial.quickstart import viewsrouter = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [path('', include(router.urls)),path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

因为我们使用的是ViewSet而不是view,所以我们可以通过简单地将ViewSet注册到Router来自动生成API的 URL conf。

可以发现,和Django程序相比,我们没有写template做前端的显示,而是写了序列化类提供API。前端可以分离出来,使用API来和后端通信。

django
drf
(图片来自:一图看懂Django和DRF(https://zhuanlan.zhihu.com/p/53957464))

测试API:

使用浏览器访问网址:
http://127.0.0.1:8000/users/

在这里插入图片描述

由于设置了权限,没登陆时查看不了。点击login用管理员账号(admin,password123)登陆:
在这里插入图片描述

可以看到JSON格式的数据。

也可以通过httpie工具(可以用pip安装)发送http请求获取数据:
http -a admin:password123 http://127.0.0.1:8000/users/

参考

DRF官网:https://www.django-rest-framework.org/
https://www.django-rest-framework.org/topics/rest-hypermedia-hateoas/
一图看懂Django和DRF:https://zhuanlan.zhihu.com/p/53957464
一文彻底弄懂REST API:https://zhuanlan.zhihu.com/p/536437382
RESTful API 设计指南:https://www.ruanyifeng.com/blog/2014/05/restful_api.html

http://www.yayakq.cn/news/917442/

相关文章:

  • 赤峰做网站建设的企业长沙景点有哪些
  • 用typecho做的网站网站文件夹结构
  • 公司网站的备案号是如何链接的商城网站建设可以吗
  • 网站开发项目计划书湖南建设网站公司
  • 网站诊断书微网站 .net
  • 怎样创办网站绍兴网站建设哪好
  • 人力资源公司是中介吗丹东seo排名公司
  • 展馆设计网站建设摩托车官网官方网站
  • 建网站的详细技术网站开发进度表
  • 东营网站制作公司做爰全国网站
  • 溧水区住房和城乡建设厅网站ppt模板免费下载 素材手机版
  • 猎头网站模板市场营销策划方案模板
  • 艺术品商城网站开发本地搭建的wordpress上传到主机
  • 网站如何做线下推广如何找外贸公司
  • 河北电子商务网站建设wordpress进不后台
  • 巨野住房和城乡建设局网站黔东南小程序开发公司
  • 知识付费网站开发临沂网站维护公司
  • 毕设网站代做一般预算多少钱江门企业模板建站
  • 中国移动视频网站建设设计官网首页需要多久
  • 濮阳房产网站建设企业网d1net的功能
  • 免费做网站收录的wordpress对接卡盟
  • 网站开发代理江苏五种网络营销推广方法
  • apache添加多个网站如何搜名字搜到自己做的网站
  • 织梦网站一级目录建设摩托车官方网
  • 篡改 网站 支付接口网易邮箱企业邮箱密码忘了
  • 赣州网站建设需要多少钱企业站seo案例分析
  • asp.net网站备份sem账户托管外包
  • js做的网站网站模板的制作怎么做的
  • 2015做哪个网站能致富专业网站排名优化公司
  • 广州市城乡建设局网站溧阳 招网站开发