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

网站搭建行业共享的网站备案

网站搭建行业,共享的网站备案,宁德网站建设公司,汝阳网站建设在当今的 Web 开发中,构建 RESTful API 已经成为连接前后端不可或缺的一环。Django REST Framework(DRF)是一个强大而灵活的工具包,用于构建 Web APIs。它基于 Django 框架之上,提供了简单且可扩展的方式,让…

在当今的 Web 开发中,构建 RESTful API 已经成为连接前后端不可或缺的一环。Django REST Framework(DRF)是一个强大而灵活的工具包,用于构建 Web APIs。它基于 Django 框架之上,提供了简单且可扩展的方式,让开发者能够快速地创建出功能丰富的 API。

本文将带你从零开始,使用 Django REST Framework 创建一个简单的博客应用 API,涵盖模型设计、序列化器、视图集、路由配置以及权限管理等内容。


一、安装与配置 Django REST Framework

首先确保你已经安装了 Django 并创建了一个项目。接下来我们来安装 DRF:

pip install djangorestframework

然后,在你的 settings.py 文件中的 INSTALLED_APPS 列表里添加 'rest_framework'

INSTALLED_APPS = [...'rest_framework',
]

二、创建博客应用

假设你已经有了一个名为 blog 的应用,我们将在此基础上构建我们的 API。

1. 定义模型

models.py 中定义文章和作者的模型:

from django.db import modelsclass Author(models.Model):name = models.CharField(max_length=100)def __str__(self):return self.nameclass Post(models.Model):title = models.CharField(max_length=200)content = models.TextField()author = models.ForeignKey(Author, on_delete=models.CASCADE)published_date = models.DateTimeField(auto_now_add=True)def __str__(self):return self.title

运行迁移命令以创建数据库表:

python manage.py makemigrations
python manage.py migrate

三、序列化数据

为了将 Django 模型转换为 JSON 格式,我们需要使用 DRF 提供的序列化器。

1. 创建序列化器

blog 应用下新建一个 serializers.py 文件,并定义如下内容:

from rest_framework import serializers
from .models import Post, Authorclass AuthorSerializer(serializers.ModelSerializer):class Meta:model = Authorfields = ['id', 'name']class PostSerializer(serializers.ModelSerializer):author = AuthorSerializer()class Meta:model = Postfields = ['id', 'title', 'content', 'author', 'published_date']

这里我们定义了两个序列化器:一个是针对 Author 模型的 AuthorSerializer,另一个是针对 Post 模型的 PostSerializer,其中包含了对 Author 的嵌套序列化。


四、编写视图

DRF 提供了两种主要的方式来定义视图:基于函数的视图和基于类的视图。在这里,我们将使用视图集(ViewSets),这是一种更加简洁和强大的方式。

1. 创建视图集

views.py 中添加以下代码:

from rest_framework import viewsets
from .models import Post, Author
from .serializers import PostSerializer, AuthorSerializerclass AuthorViewSet(viewsets.ModelViewSet):queryset = Author.objects.all()serializer_class = AuthorSerializerclass PostViewSet(viewsets.ModelViewSet):queryset = Post.objects.all()serializer_class = PostSerializer

五、配置 URL 路由

为了让 API 可访问,我们需要设置相应的路由。

urls.py 中进行如下修改:

from django.urls import include, path
from rest_framework.routers import DefaultRouter
from blog.views import AuthorViewSet, PostViewSetrouter = DefaultRouter()
router.register(r'authors', AuthorViewSet)
router.register(r'posts', PostViewSet)urlpatterns = [path('', include(router.urls)),
]

这样我们就设置了两个基本的路由 /authors//posts/,分别对应作者和文章的操作。


六、测试 API

启动 Django 开发服务器:

python manage.py runserver

现在你可以通过浏览器或 POSTMAN 等工具访问 API 接口了。例如:

  • 获取所有文章列表:GET http://localhost:8000/posts/
  • 创建新文章:POST http://localhost:8000/posts/
  • 更新一篇文章:PUT http://localhost:8000/posts/{id}/
  • 删除一篇文章:DELETE http://localhost:8000/posts/{id}/

七、添加认证和权限

对于大多数 API 来说,控制谁可以访问特定资源是非常重要的。DRF 提供了多种认证方式和权限策略。

1. 配置全局认证

settings.py 中添加:

REST_FRAMEWORK = {'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework.authentication.SessionAuthentication','rest_framework.authentication.BasicAuthentication',),'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',),
}

这将启用基本的身份验证和会话身份验证,并要求所有用户必须已登录才能访问 API。

2. 自定义权限

如果你想对不同的视图设置不同的权限,可以在对应的视图集中指定 permission_classes 属性。

from rest_framework.permissions import IsAdminUserclass PostViewSet(viewsets.ModelViewSet):...permission_classes = [IsAdminUser]  # 只有管理员可以编辑帖子

八、总结

通过本教程,你应该已经学会了如何使用 Django REST Framework 快速搭建一个 RESTful API。我们覆盖了从环境准备、模型定义、序列化器编写、视图集实现到路由配置的基础知识,并介绍了如何添加认证和权限保护。

当然,DRF 还有许多高级特性等待你去探索,如分页、过滤、自定义动作等。希望这篇文章能帮助你在开发过程中更好地理解和运用这些概念。


参考资料

Home - Django REST framework

Quickstart - Django REST framework

Viewsets - Django REST framework

Authentication - Django REST framework

http://www.dtcms.com/a/612325.html

相关文章:

  • 推荐常州网站推广吴江网站开发
  • 信息守恒下的涌现与 AI 传输质量观测
  • 郑州市网站开发无极在线招工招聘信息
  • 网站封面制作做家旅游的视频网站
  • 政务网的门户网站建设企业网站开发时间
  • 温州网站建设公司公司哪家好挂机宝做网站
  • 与铁路建设相关的网站专业网站建设微信商城开发
  • 怎样手机微信登陆网站国内oa办公系统排名
  • 景观网站设计网站手机开发框架
  • 15年做那个网站能致富wordpress首页背景
  • 网站建设必须要服务器吗wordpress引用文件
  • 成都有哪些网站建设的公司仿冒网站制作
  • 网站的二维码怎么做免费ppt模板简约
  • 竞价推广什么意思seo软件服务
  • 网站登陆界面psd网站建设与设计大作业
  • 和平苏州网站建设大连网站建设公司
  • qq小程序入口烟台软件优化网站建设
  • 怎么打击对手网站排名中国十大装饰公司
  • 网站设计确认书设计素材的网站
  • 网站建设详细描述产品的是什么意思昆明网络营销公司哪家好
  • 公司建设网站需要多少钱西安十大网络公司
  • 废品回收在哪个网站做效果好怎样进行seo优化
  • 浙江建设厅 继续教育 网站制作一个网页需要花钱吗
  • 免费网络短剧网站一家企业如何做网站推广
  • EG2132 半桥MOS管栅极驱动芯片技术解析
  • 万网网站空间费网店装修是什么
  • 大连城市建设网站景安建网站
  • 深圳推广公司推荐手机网站优化排名
  • 建设银行网站怎么看不见余额推荐优秀网站
  • 盈科互动网站建设制作公司湘潭做网站出色磐石网络