视图Views-一般视图
前面我们介绍了Django的路由系统,其将浏览器输入的页面请求分发给不同的视图函数进行处理,通过视图函数返回浏览器需要的结果。本章详细介绍一下Django的视图View。
视图Views概述
- 作用:视图接受web请求并响应web请求
- 本质: 视图就是python中的处理函数(类)
- 响应: 一般是一个网页的HTML内容、一个重定向、错误信息页面、json格式的数据
视图views分为基于函数的视图(FBV)和基于类的视图(CBV)
基于函数的视图
定义
# urls.py
from django.urls import path
from myapp import views
urlpatterns = [
path('hello/', views.index),
]
def index(request, arg):
if request.method == 'POST':
return HttpResponse('method is :' + req.method + ', argument is ' + str(arg))
elif request.method == 'GET':
return HttpResponse('method is :' + req.method + ', argument is ' + str(arg))
说明
- 路由使用文件名加函数名找到视图函数,如(views.index)
- 视图函数默认第一个函数是一个HttpRequet对象
- 函数内部根据HttpRequest不同的请求方法,进行不同的处理
基于类的视图
定义
# urls.py
from django.urls import path
from myapp import views
urlpatterns = [
path('hello/', views.Index.as_view()),
]
# views.py
from django.views import View
class Index(View):
def get(self, request):
print(‘method is :‘ + request.method)
return render(request, ‘index.html‘)
def post(self, request):
print(‘method is :‘ + request.method)
return render(request, ‘index.html‘)
说明
- 路由使用文件名加类名加as_view方法找到对应的视图函数
- 视图类以View为基类,在其内部根据不同的HttpRequest请求方法实现不同的函数来进行处理,如
def get(self, request)
代表处理来自GET方法的请求、def post(self, request)
代表处理来自POST方法的请求 - 类中函数名必须小写