django使用二——restful框架使用

news2024/12/22 11:30:25

背景

前言:
前篇django使用一,已将基本的项目、应用创建并运行;见:django使用一——规范化创建
本篇则针对ViewSet及rest_framework初使用做介绍;

闲笔:
两束平行宇宙射线射入黑盒,在人们充满欣慰的目光中,仿佛皆以为穿出是那么的简单,没人想过射线在里面行走的轨迹。宇宙的另一端,探寻者们孜孜不倦,对于他们来说,找到一丁点蛛丝马迹,说不定就能解开这个黑盒之谜,带去无限光明。

rest_framework

1、【rest_framework框架】可以很好的帮忙我们开发REST API接口,具体介绍见官网链接:rest_framework介绍

2、【django中引入】
app中注册该应用,见下:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'article'
]

3、【views.py中使用viewset】
这里前提是对应的model已经建立。
viewset则是类的高级用法,具体django已经内部封装了相关的类,参考:

class ModelViewSet(mixins.CreateModelMixin,
                   mixins.RetrieveModelMixin,
                   mixins.UpdateModelMixin,
                   mixins.DestroyModelMixin,
                   mixins.ListModelMixin,
                   GenericViewSet):
    """
    A viewset that provides default `create()`, `retrieve()`, `update()`,
    `partial_update()`, `destroy()` and `list()` actions.
    """
    pass

views.py

from django.shortcuts import render
from rest_framework import viewsets
from . import models as m
from . import serializers as s


# Create your views here.
class AuthorViewSet(viewsets.ModelViewSet):
    queryset = m.Author.objects.all()
    serializer_class = s.AuthorSerializer
    filter_fields = '__all__'
    ordering = ['-pk']


class ArticleViewSet(viewsets.ModelViewSet):
    queryset = m.Article.objects.all()
    serializer_class = s.ArticleSerializer
    filter_fields = '__all__'
    ordering = ['-pk']

4、【序列化】
serializers.py

from rest_framework import serializers
from . import models as m


class AuthorSerializer(serializers.ModelSerializer):
    class Meta:
        model = m.Author
        fields = '__all__'


class ArticleSerializer(serializers.ModelSerializer):
    class Meta:
        model = m.Article
        fields = '__all__'

5、【应用中添加urls.py文件并路由注册】
应用中的urls.py

from . import views
from rest_framework.routers import DefaultRouter

urlpatterns = []  # 路由列表
router = DefaultRouter()  # 可以处理视图的路由器
router.register('article', views.ArticleViewSet)  # 向路由器中注册视图集
router.register('author', views.AuthorViewSet)  # 向路由器中注册视图集
urlpatterns += router.urls  # 将路由器中的所有路由信息追加到Django的路由列表中

6、【项目urls.py中将应用路由挂钩】
项目中的urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('article.urls'))
]

7、【结果验证】访问http://localhost:8000/api/,如图:
在这里插入图片描述

以上相关的restful接口过程已建立,在views.py中新建对应的接口后续开发即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/127058.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《计算机网络》——第六章知识点

第六章思维导图如下: 应用层对应用程序的通信提供服务。 域名解析:根据域名找IP地址 域名结构 FTP是基于客户/服务器(C/S)的协议。 用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。依照FTP协议提供服务,进行文件传送的计算机就是FTP服…

对象类型的设计(简答题)

在实际项目开发中需要进行对象类型的设计,给你的问题是,在学生信息系统中需要你设计班级Classes类型和学生Student类型,为了便于数据的查询,需要建立对象之间的联系,比如一个班级有多个学生,每个学生属于一…

看完这篇,我不允许你还不会用Allegro显示PCB的3D模式

看完这篇,我不允许你还不会用Allegro显示PCB的3D模式 Allegro可以显示PCB的3D效果,利于查看和检查,如下图 具体操作如下 选择Set-up-user preferences选择Display

游戏党别错过,提升FPS试试这样

如果你准备畅玩游戏,却频繁掉帧,严重影响游戏体验,那这里有些提升FPS的小方法,游戏党别错过了。 整理主硬盘更改电源选项更新显卡驱动降低屏幕分辨率关闭其他应用程序并禁用启动项 方法一、整理主硬盘 1、打开文件资源管理器&am…

APP Inventor练习——蓝牙通信

文章目录前言一、蓝牙调试1.组件设计2.逻辑设计二、蓝牙对战1.组件设计2.逻辑设计3.效果展示总结前言 练习APP Inventor中蓝牙的使用,并为之前的项目APP小游戏——一个都不能死增加了蓝牙对战功能。 一、蓝牙调试 先写一个蓝牙调试的APP,用来收发文本 …

2023年七大网络攻击手段预测

受疫情和网络攻击的加持下,2022年对网络安全领域的人来说并不是轻松的一年,一系列备受瞩目的网络攻击、数据泄露事件打的网安人手忙脚乱,供应链攻击、勒索软件攻击、业务欺诈、关键基础设施攻击、大规模数据泄露、地缘政治相关黑客攻击等网络…

热点舆情监测软件方法,舆情监测软件介绍,舆情软件监测意义?

热点舆情监测是指监测和分析当前热门话题或事件的舆情监测。这种监测可以帮助企业、政府机构或媒体机构了解公众对当前热门话题或事件的看法,接下来TOOM舆情监测小编简单介绍热点舆情监测软件方法,舆情监测软件介绍,舆情软件监测意义? 一、…

java8后接口的默认方法

这里我们先看一个案例 我们创建一个包 包下创建一个接口 testInterface 参考代码如下 public interface testInterface {void show(); }然后 我们创建一个类型 realizationMethod 来实现这个接口 并重写这个show方法 realizationMethod 参考代码如下 public class realizat…

腊八节吃什么What to eat on the Laba Festival

农历十二月初八是中国的传统节日——腊八节,腊代表中国农历的十二月,而八是eight的发音,因此,这个节日被翻译成腊八。 The Laba Festival is a traditional Chinese holiday celebrated on the eighth day of the twelfth month …

Selenium switch_to 处理多Web页签窗口与封装

目录 前言 脚本案例 未做页签切换处理的 做了页签切换处理的脚本 面签切换封装 1、按面签位置切换封装 2、按页签标题切换封装 3、两个封装的调用 前言 在做自动化测试时,经常会遇到一个链接,它会重新打开一个Web签,如下图的样式 如…

Tif地形数据下载CTB切片nginx发布及cesium调用

访问这个网站:https://urs.earthdata.nasa.gov/ 需要注册 选择数据类型如下 点击Search,可以看到很多搜索结果 点击下载一项tif 下载成功后,需要切片的话,可以选择两种方式 1CesiumLab3,如下图 可以选择多个tif,输出类型选择散…

LeetCode118.杨辉三角 | LeetCode119.杨辉三角Ⅱ

LeetCode刷题记录 文章目录📜杨辉三角Ⅰ⌨C代码📜杨辉三角Ⅱ⌨C代码📜杨辉三角Ⅰ 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例1 输入: n…

Linux进程间通信

1.进程间通信介绍 1.1进程间通信目的 数据传输:一个进程需要将它的数据发送给另一个进程。资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某…

深度学习入门(六十六)循环神经网络——束搜索

深度学习入门(六十六)循环神经网络——束搜索)前言循环神经网络——束搜索课件贪心搜索穷举搜索束搜索总结教材1 贪心搜索2 穷举搜索3 束搜索4 小结前言 核心内容来自博客链接1博客连接2希望大家多多支持作者 本文记录用,防止遗忘…

MySQL批量导入数据时,为何表空间膨胀了N倍

GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。作者:叶金荣文章来源:GreatSQL社区原创 问题缘起 同事在客户现场利用DTS工具,从A实例将数据…

I2C(IIC)的仲裁、时钟同步和时钟扩展

I2C(IIC)的仲裁、时钟同步和时钟扩展 注意,CSDN以及博客园上有大量抄袭和以讹传讹的情况,注意鉴别。 本文参考了Philip的I2C specification以及wiki pedia,并且通过实践验证。 阅读本文要求你已经对i2c的协议有基本的…

调剂的事情该什么时间想?

小部分硕士考生已经开始关心调剂的事情了,其实这个事情还早,但对于考试成绩不是很理想又想要今年顺利读书的考生,调剂有可能会成为实现其目标的一条途径。针对这个问题小立老师针对MBA/MPA/MEM管理类硕士为大家做个前期的梳理,以平…

立足信创国产化运维,打造安全可控IT运维管理系统

随着国产化信创应用试点行业的不断扩大,应用信创产品的企事业单位逐渐增多。大多数企业均面临着陌生的国产化环境与产品,其使用习惯和解决问题的方式都面临改变。北京智和信通切实立足用户需求,提供信创运维服务。 通过“监、管、控、析、安…

监控 DolphinDB 进程对服务器资源的使用情况

本方案主要用于监控 DolphinDB 进程对服务器资源的使用情况及 DolphinDB 性能,如 DolphinDB 进程 CPU 占用情况、DolphinDB 进程内存占用情况、DolphinDB 进程磁盘资源使用情况等。DolphinDB 内置了相应的运维函数以获取当前节点的资源使用情况,Promethe…

OpenHarmony#深入浅出学习eTs#(五)eTs语言初识

本项目Gitee仓地址:深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com) 一、eTs介绍 概述 基于TS扩展的声明式开发范式的方舟开发框架是一套开发极简、高性能、跨设备应用的UI开发框架,支持开发者高效的构建跨设备应用UI界面。 基础能力 使用基于…