Django——视图
Django的视图(View)
- 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。
- 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。
- 将视图放置在项目(project)或应用程序(app)目录中的名为views.py的文件中
FBV与CBV
FBV(Funciton Based View)基于函数的view
CBV(Class Based Vies)基于类的view
# FBV版添加班级
def add_class(request):
if request.method == "POST":
class_name = request.POST.get("class_name")
models.Classes.objects.create(name=class_name)
return redirect("/class_list/")
return render(request, "add_class.html")
# CBV版添加班级
from django.views import View
class AddClass(View):
def get(self, request,*args,**kwargs): #如果请求为GET那么就会执行该方法,而不用去判断
return render(request, "add_class.html")
def post(self, request,*args,**kwargs): #如果请求为POST那么就会执行该方法,而不用去判断
class_name = request.POST.get("class_name")
models.Classes.objects.create(name=class_name)
return redirect("/class_list/")
使用CBV的好处与注意事项:
- CBV需要在urls中需要修改一下。url(r'add_class/', views.AddClass.as_view()),
- 不需要进行发送请求的判断,有get就会运行class里的get请求。是post就会运行post
装饰器使用:
#在FBV上正常加入即可。下面是在CBV上加入装饰器
from django.utils.decorators import method_decorator
#使用method_decorator和直接使用timer的区别在于装饰器内传入参数的第一位是request对象,而timer的第一位是函数对象
#1. 加到方法上,针对自己写的请求方式
@method_decorator(timer) #timer是写好的装饰器
def get(self,request,*args,**kwargs):
pass
#2. 加到dispatch方法上,该方法是将post、get等所有请求全部涵盖在内。
@method_decorator(timer)
def dispatch(self,request,*args,**kwargs): #dispatch函数是内置的,需要更改就将其单独写在自己的函数中。
print(111)
ret = super().dispatch(request,*range,**kwargs)
print(222)
return ret
#3. 加到类上,可以将name换成单独的请求方式,get或post,如果想全部应用就写dispatch上即可。
@method_decorator(timer,name='dispatch')
class A(View):
pass
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2022-04-14 Python——requests(网页获取)