Code前端首页关于Code前端联系我们

什么是 django-rest-framework?如何开始?

terry 2年前 (2023-09-24) 阅读数 68 #后端开发

RESTFUL是一种基于HTTP的Web应用程序的设计风格和开发方法,可以用XML或JSON来定义。 RESTFUL适用于移动互联网厂商作为业务接口,实现第三方OTT调用移动网络资源功能的场景。操作类型称为添加、修改和删除资源。

所以一句话,宁静是一种设计风格,而不是一项新技术。

更具体地说,将请求的实体视为资源,通过http自身的方法(get、post、put、delete)执行相应的添加、删除、修改、查询等操作。比如get请求就是获取资源。 get /user/ 可以获取用户列表; get /user/1 可以获取用户 id=1 等等其他方法。

django-rest-framework
官方介绍如下:

简单来说,django-rest-framework的功能相当于django view+form。我们可以直接根据模型生成接口,也可以自定义序列化器字段来生成接口(类似于使用表单)。

快速上手
根据您的需求,可能会更容易理解!

假设需求是: 需要一组博客界面。接口可以实现以下功能:博客列表、博客详情、新建博客、删除博客

知道需求,就能对症下药了! ?在博客应用下新建一个序列化器文件,并在其中写入以下代码:

# Blog List Serializer Class
class PostSerializer(serializers.ModelSerializer):
category = serializers.SlugRelated read_only( read_only( read_only) = True ,
slug_field='名称',
)

tag = serialisers.SlugRelatedField(
Many=True,
read_only=True,
slug_field='name',
)
)
)

阅读器。 ly=True,
slug_field='用户名',
)

created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S')

class Meta: model = Post
fields = ['id', 'title', 'category', 'tag', 'owner', 'created_time']

# 博客详细信息序列化器类
类PostDetailSerializer ( PostSerializer ):
类 Meta:
模型 = Post
字段 = ['id', 'title', 'category', 'tag', 'owner', 'content_html', 'creation_time' ]
z

此拼写与型号形式一致。 Djangorestframework相当于django中的warp。它提供了类似于forms.Form和forms.ModelForm的类(serialisers.Serializer和serializers.ModelSerializer)。基于同样的逻辑,我们定义的PostSerializer可以继续实现自定义字段、自定义控制逻辑、自定义数据处理逻辑等方法。

有了序列化器后,创建一个新的视图层逻辑,在博客应用下创建一个新的 apis.py 文件并编写以下代码:

class PostViewSet(viewsets.ModelViewSet):
serializer_class = PostSerializer
queryset = Post.objects.filter(status=Post.STATUS_NORMAL)

defretrieve(self, request, *args, **kwargs):
self.serializer_class=PostDetailSerializer
return super().retrieve(request,*args,**kwargs)
这样就完成了 CRUD (c ) :创建新的,r:获取查询,u:更新,d:删除)操作定义。

写完上面的逻辑代码后,就可以配置URL了!作为一组接口,django-rest-framework 还提供了路由器组件来帮助我们更好地构建 URL。在 urls.py 中添加以下代码:

from rest_framework.routers import DefaultRouter
router=DefaultRouter()
router.register(r'post',PostViewSet,basename='api-') ' ) urlpatterns = [
url(r'^api/',include((router.urls,'api'),namespace='api')),
]

完成上述步骤后它有多个接口。 ?当需要向其他团队提供接口时,接口文档是整个项目开发过程中必要的输出产品之一。编写接口文档是比较繁琐枯燥的工作,页面需要非常仔细,而且大多需要将定义好的接口格式复制到文档中。

和Django的第三方插件sumpleui一样,定义一个模型,完成一些相关配置,然后获取接口。那么,我们是否可以通过简单的配置甚至一套接口测试工具来获取文档呢?

答案是:是的!

这是djangorestframework提供的文档工具!

设置非常简单,只需在 URL 中添加一行代码即可。

配置前再安装一个依赖库:pip install coreapi

需要添加以下代码:

fromrest_framework.documentation import include_docs_urls

urlpatterns=[
url(r'^api/docs/', include_docs_urls(title='typeidea apis'))
上述设置完成后重新启动]。打开 /api/docs/ 时可能会提示如下错误:

解决办法也很简单,参见博客:AttributeError: Object 'AutoSchema' does not have attribute 'get_link' when using Coreap 错误被要求

这意味着完成上述配置后,在设置中添加以下代码:

REST_FRAMEWORK = {
'DEFAULT_SCHEMA_CLASS':'rest_framework.schemas.coreapi.AutoSchema',

。 ,重新启动项目并访问 /api/docs/ 应该会得到如下界面!内容就靠你自己慢慢去体验和探索了!

总结:Djangorestframework是我今天刚了解的一个Django的第三方插件。刚开始学习的时候,还是有点难以理解。经过一天的辛苦工作并在博客上进行总结,看起来仍然很慢。我开始理解并消化它。总之,根据个人使用体验,确实是一款非常好用的第三方插件。风格真的很像Django。我是从学习Django开始的,然后在学习之前对Django有了一个大概的了解。插件,它们给我同样的感觉:深思熟虑!使开发者能够用更少的代码实现更多的功能!这对于开发者来说简直是个好消息!但这可能会让开发者走向另一个极端。毕竟人总是喜欢偷懒的。也许他们心里在想:大佬们已经为我准备好了架子。我可以直接使用。闻起来好极了!为什么要自己写?是的,这个想法是正确的,但是当我们使用一些很棒的框架或插件时,我们应该带着学习的态度来使用它们。我们不仅需要知道它们是什么,还需要知道它们为什么存在。因此,我们不能忘记根源。因此,编写代码的能力不会降低。不过多看源码多写还是有用的~
——————————————
版权所有:本文为CSDN博客“小亮_”原创文章,遵循 CC 4.0 BY -SA 版权协议 转载时请附上原始出处链接及本声明
原文链接:https://blog.csdn.net/max_LLL/article/details/122600800

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门