django 视图高级 TemplateView类的使用 200317

本文介绍了Django中TemplateView的高级用法,主要适用于静态内容展示的页面,如关于我们。讲解了TemplateView的使用场景、基本操作以及如何通过创建子类设置模板变量,并结合实例展示了路由配置。

在这里插入图片描述

应用场景

如果一个网页的内容不需要动态的渲染

那么可以直接使用

TemplateView

例如,关于我们,这样一类的页面

在这里插入图片描述

使用方法

  • 导入TemplateView类
  • 路由文件,写在视图的位置,通过as_view()
  • 传参数 template_name = 模板名称

在这里插入图片描述

TemplateView的子类

可以在模板中定义一个模板变量

在这里插入图片描述

配好一个路由

在这里插入图片描述

效果

在这里插入图片描述

在这里插入图片描述

### Django 视图继承机制及请求处理方式 #### 一、Django 视图的继承机制 Django视图(Class-Based Views, CBV)基于面向对象编程的思想设计,允许开发者通过继承和组合的方式构建复杂的视图逻辑。所有的视图都直接或间接继承自 `django.views.View` 这个基础[^1]。 - **核心基**: `View` 是所有视图的基础,提供了基本的功能支持,比如 HTTP 请求分发到对应的方法上。 - **HTTP 方法映射**: 在视图中,不同的 HTTP 请求方法(如 GET、POST、PUT、DELETE 等)会被自动映射到对应的方法上。例如,当客户端发送一个 GET 请求时,框架会调用中的 `get()` 方法;如果是 POST 请求,则调用 `post()` 方法[^3]。 为了增强功能,Django 提供了一些更高层次的通用视图(Generic Class-Based Views),这些进一步抽象了常见的操作模式,减少了重复代码编写的工作量。例如: - `TemplateView`: 渲染模板并返回响应。 - `ListView`: 显示对象列表。 - `DetailView`: 显示单个对象详情。 - `FormView`: 处理表单提交。 - `CreateView`, `UpdateView`, `DeleteView`: 对象创建、更新和删除的操作[^2]。 此外,还可以利用 Mixin 来扩展视图的行为。Mixins 是一种轻量级的工具,用于将特定行为注入到视图中而不改变其主要职责。例如,在 RESTful API 开发中常用的 `ListModelMixin` 和 `CreateModelMixin` 就是用来分别提供查询集合数据和新增资源的能力[^4]。 #### 二、请求处理流程 在 Django 中,视图的请求处理过程大致如下: 1. **URL 路由匹配**: 当接收到用户的请求后,Django 首先会在项目的 URLconf 文件里查找与之相匹配的路径表达式,并找到关联的具体视图函数或者视图。 2. **实例化视图**: 如果目标是一个视图而不是普通的函数视图,那么 Django 会创建这个的一个新实例。 3. **调用 as_view() 方法**: 在配置路由的时候,通常使用的是 `.as_view()` 方法来注册视图为实际可被访问的对象。此方法的作用是把转换成一个标准的 Python 函数形式以便于后续执行。 4. **分派给相应的方法**: 接下来,根据传入的 HTTP 动词型 (`request.method`) ,Django 自动寻找当前下是否有同名的小写方法存在 (即 get(), post()) 并将其交给该方法去完成具体的业务逻辑处理工作。 5. **返回 HttpResponse 实例或其他兼容型的响应体**: 每个这样的方法都需要最终返回某种形式的有效应答内容——这通常是另一个叫做 `HttpResponse` 的东西或者是它的某些子别之一。 ```python from django.http import JsonResponse from django.views import View class ExampleView(View): def get(self, request): data = {"message": "This is a GET response"} return JsonResponse(data) def post(self, request): data = {"message": "This is a POST response"} return JsonResponse(data) ``` 上述例子展示了如何定义一个简单的视图以区分不同种的 HTTP 请求并给予恰当的回答[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值