[Python]Django类视图

简介: [Python]Django类视图

1f1d5455f00d4adcaf3c28aa422a344e.jpg

前言

系列文章目录

[Python]目录

视频及资料和课件

链接:https://pan.baidu.com/s/1LCv_qyWslwB-MYw56fjbDg?pwd=1234

提取码:1234

1. 类视图简介

以函数的方式定义的视图称为函数视图。

但是遇到一个视图对应的路径提供了多种不同HTTP请求方式的支持时,便需要在一个函数中编写不同的业务逻辑,代码可读性与复用性都不佳。

def register(request):
    """处理注册"""
    # 获取请求方法,判断是GET/POST请求
    if request.method == 'GET':
        # 处理GET请求,返回注册页面
        return render(request, 'register.html')
    else:
        # 处理POST请求,实现注册逻辑
        return HttpResponse('这里实现注册逻辑')

在Django中可以使用类来定义一个视图,称为类视图。

使用类视图可以将视图对应的不同请求方式的响应处理以类中的不同方法来区别定义。

类视图的好处:

1.代码可读性好

2.类视图相对于函数视图有更高的复用性 , 如果其他地方需要用到某个类视图的某个特定逻辑,直接继承该类视图即可

2. 类视图的定义

2.1 继承父类的导入

定义类视图需要继承自Django提供的父类View.

View的导入:

from django.views import View

2.2 定义类视图

在类视图中,对于不同的请求方式,定义不同的方法进行处理,类视图的方法直接采用http的请求方法名字作为函数名,如:get、post、delete…

类视图的方法的第一个参数为self,第二个参数必须为请求实例对象request,同时类视图的方法必须有返回值,返回值为HttpResponse对象及其子类对象。

from django.views import View
# Create your views here.
class LoginView(View):
    def get(self, request):
        return HttpResponse('get')
    def post(self, request):
        return HttpResponse('post')

2.3 类视图的路由配置

配置路由时,使用类视图的as_view()方法来添加。其实类视图.as_view()就是一个视图函数名。

类视图.as_view()会返回请求方法对应的处理函数。

as_view()执行流程:

path('class_login/', views.LoginView.as_view())





相关文章
|
7天前
|
Linux 数据库管理 Python
CentOS7编译安装Python3.10(含OpenSSL1.1.1安装),创建虚拟环境,运行Django项目(含sqlite版本报错)
CentOS7编译安装Python3.10(含OpenSSL1.1.1安装),创建虚拟环境,运行Django项目(含sqlite版本报错)
66 4
|
4天前
|
开发框架 数据库 开发者
Web开发新境界:用Python玩转Django和Flask!
【6月更文挑战第12天】Python的Web开发框架Django和Flask各有千秋。Django是全能型框架,适合快速开发大型应用,提供ORM、模板引擎、URL路由和后台管理等全面功能。Flask则轻量级且灵活,适用于小型到中型应用,以其简单易用、高度可扩展和灵活路由著称。两者结合使用,能应对各种Web开发需求。
|
1天前
|
Python
Python 高质量类编写指南
Python 高质量类编写指南
30 15
|
1天前
|
算法 Java API
Python零基础入门-9类
Python零基础入门-9类
|
1天前
|
小程序 前端开发 JavaScript
计算机Python项目|django傣族节日及民间故事推广小程序
计算机Python项目|django傣族节日及民间故事推广小程序
|
2天前
|
前端开发 JavaScript 数据安全/隐私保护
计算机Python项目|django学生成绩管理系统
计算机Python项目|django学生成绩管理系统
|
2天前
|
机器学习/深度学习 存储 监控
基于YOLOv8深度学习的120种犬类检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战、狗类检测、犬种识别
基于YOLOv8深度学习的120种犬类检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战、狗类检测、犬种识别
|
2天前
|
C++ Python
Python基础教程(第3版)中文版 第7章 类和对象(笔记)
Python基础教程(第3版)中文版 第7章 类和对象(笔记)
|
5天前
|
API 网络架构 Python
在django使用视图集和路由集
【6月更文挑战第11天】本文介绍Viewsets是Django REST框架中将多个视图逻辑整合到单个类的工具,减少了重复代码。当项目API变得复杂且有重复模式时,考虑使用它们;否则,保持视图和URL模式的简洁性。
12 3
|
6天前
|
API 数据库 网络架构
在django中应用视图和路由集
【6月更文挑战第10天】 本文介绍viewsets`和`Routers`是Django REST framework中用于简化API视图和路由的工具。它们提供了一个抽象层,允许用更少的代码替代多个相关视图,并能自动生成URL。定义`UserList`和`UserDetail`视图集,分别用于列表和详情展示。
12 3