一文带你学会django视图(视图和类视图的使用方法详解)
一文带你学会django视图(视图和类视图的使用方法详解)在url函数中第一个参数指向Url地址,第二个参数指向视图函数。而这里我们定义的是视图类不能直接付给url函数,我们需要利用Django提供的类视图方法as_view()来分发路由。url在定义路由的时候需要在匹配头用尖号^、匹配尾用$,path()路由语法中不需要定义正则表达式的开头和结尾。urlpatterns = [ # url('^index/$' index.as_view()) path('index/' index.as_view()) ]as_view()函数Django完成URL解析之后会直接把request对象以及URL解析器捕获的参数丢给视图函数,当使用类视图时我们就需要通过as_view方法,as_view中还定义了一个view函数,该函数接收三个参数,第一个是request对象,第二个是url解析器捕获的url中
Django是一个基于MVC框架构造的MTV框架,因为控制器接受用户输入的部分已经由框架自动处理了,我们只需要关注模型(Model)、模板(Template)和视图(Views)的构建。其中的Views就是我们的视图模块,用来接收、处理Web请求并且返回Web响应。在Url中我们需要建立url地址和视图函数的对应关系,当用户请求某个url地址时django就能找到对应的视图函数进行处理。每一个请求都对应着一个视图,由视图处理请求后再返回数据给浏览器显示。
Views视图视图其实就是一个python函数(函数一般定义在 app/views.py文件中),该函数必须有request参数(参数名可以自定义)。当服务器接收到http协议的请求后会根据报文自动创建Httprequest对象,这个HttpRequest对象包含了前端发送过来的数据和请求头信息。django.http模块中定义了HttpRequest对象相关的API,我们可以利用这些API在函数中完成对请求数据进行接收、认证、分析、处理,然后返回用户需要的相关数据及类型。
from django.http import HttpResponse
# 必须有一个参数request
def index(request):
"""进入首页的视图函数"""
# 待处理完请求后返回字符串内容给浏览器显示
return HttpResponse("Hello Django!")
视图URL配置
在项目的urls文件中包含应用的urls文件,在应用的urls文件中包含具体url和视图的对应关系。url关系定义在一个名叫urlpatterns的列表中,每一个元素都是一条路由并对应一个视图函数。域名和端口号不需要配置,Django在启动的时候会帮我们自动关联上。
from django.contrib import admin
from django.urls import path
from app.views import *
# Project/urls.py
urlpatterns = [
# 包含应用app01下的urls.py
url(r'^app/' include('app.urls'))
]
# app/urls.py
urlpatterns = [
path('index/' index)
]
Views视图类
随着业务的增加模块需求的功能也会随之递增,需要请求和对应的视图函数也就越来越多。为了方便统一管理我们可以把同一模块的功能归类处理,这样日后维护起来也会方便很多。而且类视图具有更好的可读性、复用性和扩展性,可以被类视图继承,也可以通过添加装饰来限制行为。定义类视图需要继承Django提供的父类View,继承view类中的类方法就可以调用dispath进行请求分发。如果需要为类视图的所有方法添加装饰器可以在类前面通过@method_decorator装饰,如果只是在某个函数上装饰可以通过参数name来指定,也可以直接在需要添加装饰器的方法上使用@method_decorator。
类视图URL配置在url函数中第一个参数指向Url地址,第二个参数指向视图函数。而这里我们定义的是视图类不能直接付给url函数,我们需要利用Django提供的类视图方法as_view()来分发路由。url在定义路由的时候需要在匹配头用尖号^、匹配尾用$,path()路由语法中不需要定义正则表达式的开头和结尾。
urlpatterns = [
# url('^index/$' index.as_view())
path('index/' index.as_view())
]
as_view()函数
Django完成URL解析之后会直接把request对象以及URL解析器捕获的参数丢给视图函数,当使用类视图时我们就需要通过as_view方法,as_view中还定义了一个view函数,该函数接收三个参数,第一个是request对象,第二个是url解析器捕获的url中的位置参数,第三个是url解析器捕获的url中的关键字参数。as_view的作用就是把类转化成函数并返回一个闭包,闭包会根据请求的方式到对应的视图函数中找以请求方式命名的函数进行执行。
总结:当一个模块要请求的接口比较多时我们就可以将其写在一个视图类中,方便后续的管理和维护。以上内容是小编给大家分享的【Django实战022:视图和类视图的使用方法详解】。希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。