视图
# 视图
# 定义
在django中,视图是一个可调用的对象,能够接受用户的请求并返回响应。在视图中通过模型操作数据库,通过模板构造返回数据。
约定将视图放在名为views.py
的文件里,这个文件放置在项目或者应用目录里。
django中视图有两种:
- 函数视图
- 类视图
# 函数视图
最简单的视图,就是一个普通的python函数,它接受web请求并返回一个web响应。
例如:
from django.http import HttpResponse
def index(request):
return HttpResponse("我是首页面")
1
2
3
4
2
3
4
特点:
- 逻辑清晰好理解
- 复用性较差
# 类视图
类视图是以类的形式组织视图,类视图并不能替代基于函数的视图,与函数视图相比,类视图有如下优势:
- 与特定的
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
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
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
2
3
4
5
6
7
本文完,感谢你的耐心阅读,如有需要可加我微信,备注「博客」并说明原因,我们一起进步,下次见。

上次更新: 2022/12/26, 16:59:39