心蓝的博客 心蓝的博客
首页
  • 零基础

    • python零基础入门
  • 专项

    • 正则表达式
  • web框架

    • django框架
    • drf
技术
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档

心蓝

人生苦短,我用python
首页
  • 零基础

    • python零基础入门
  • 专项

    • 正则表达式
  • web框架

    • django框架
    • drf
技术
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • 零基础

  • 专项

  • web框架

    • django框架

      • web框架介绍
      • python虚拟环境
      • 创建django项目与应用
      • django中的路由系统
      • web框架设计模式
      • 模板
      • 静态文件引用
      • web应用开发模式
      • 请求和响应
      • 视图
        • 定义
        • 函数视图
        • 类视图
          • 类视图的基本使用
          • 类视图的路由
      • ORM与模型
      • 数据库操作
      • 项目实战一
      • 表单
      • RESTful API
      • 项目实战二
      • djangoadmin
    • drf

  • python
  • web框架
  • django框架
心蓝
2022-12-21
目录

视图

# 视图

# 定义

在django中,视图是一个可调用的对象,能够接受用户的请求并返回响应。在视图中通过模型操作数据库,通过模板构造返回数据。

约定将视图放在名为views.py的文件里,这个文件放置在项目或者应用目录里。

django中视图有两种:

  • 函数视图
  • 类视图

# 函数视图

最简单的视图,就是一个普通的python函数,它接受web请求并返回一个web响应。

例如:

from django.http import HttpResponse

def index(request):
    return HttpResponse("我是首页面")
1
2
3
4

特点:

  1. 逻辑清晰好理解
  2. 复用性较差

# 类视图

类视图是以类的形式组织视图,类视图并不能替代基于函数的视图,与函数视图相比,类视图有如下优势:

  • 与特定的HTTP方法关联 ,能通过单独的方法替代条件分支的方式处理不同的HTTP请求
  • 面向对象技术,可用于将代码分解为可重用的组件。

# 类视图的基本使用

本质上来说,基于类的视图允许你使用不同的实例方法响应不同 HTTP 请求方法,而不是在单个视图函数里使用有条件分支的代码。

因此在视图函数里处理 HTTP GET 的代码应该像下面这样:

from django.http import HttpResponse

def my_view(request):
    if request.method == 'GET':
        # <view logic>
        return HttpResponse('result')
1
2
3
4
5
6

而在基于类的视图里,会变成:

from django.http import HttpResponse
from django.views import View

class MyView(View):
    def get(self, request):
        # <view logic>
        return HttpResponse('result')
1
2
3
4
5
6
7

# 类视图的路由

Django的路由系统会使用请求和相关参数来调动一个函数而不是一个类。基于类的视图有一个as_view()类方法,这个方法会返回一个函数。

# urls.py
from django.urls import path
from myapp.views import MyView

urlpatterns = [
    path('about/', MyView.as_view()),
]
1
2
3
4
5
6
7

本文完,感谢你的耐心阅读,如有需要可加我微信,备注「博客」并说明原因,我们一起进步,下次见。

#django
上次更新: 2022/12/26, 16:59:39
请求和响应
ORM与模型

← 请求和响应 ORM与模型→

最近更新
01
requests让接口测试如此简单 原创
03-31
02
最简明的python正则教程
03-30
03
pycharm激活码
12-30
更多文章>
Theme by Vdoing | Copyright © 2019-2025 心蓝
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式