一.视图函数view
视图函数是接收一个请求(request对象),并返回响应的函数
1. HttpResponse响应请求
这个方法是返回字符串一类的,可以识别标签
2. render响应请求
render(request,".html",[**kwargs]),返回一个html页面,参数可以传给html中需要渲染的变量
3. redirect响应请求
redirect(reverse("url"),[*args]),重定向跳转到一个页面
二.CBV和FBV
1. FBV function base views
在视图函数中使用函数处理请求
def index(request): return HttpResponse("ok")
2. CBV class base views
在视图函数中使用类处理请求
from django.views import View class MyView(View): name = "xxx" # 这是分组传来的参数 def post(self,request): return HttpResponse("post") def get(self,request): return HttpResponse("get") urls.py配置 from app.views import MyView url(r"正则",MyView.as.view(name="xxx"))
三. 给视图函数加装饰器
1. 给FBV加装饰器
def wrapper(fn): def inner(*args,**kwargs): print("before") ret = fn(*args,**kwargs) print("after") return ret return inner @wrapper def index(request): return HttpResponse("ok")
2. 给CBV加装饰器
from django.views import View from django.utils.decorators import method_decorator def wrapper(fn): def inner(*args,**kwargs): print("before") ret = fn(*args,**kwargs) print("after") return ret return inner @method_decorator(warrper,name="get") #第一种 class MyView(View): name = "xxx" # 这是分组传来的参数 # 这个是分发post,get请求的,也可以用作装饰器 def dispatch(self,request,*args,**kwargs): print("before") ret = super().dispatch(request,*args,**kwargs): print("after") return ret @method_decorator(warrper) # 第二种 def post(self,request): return HttpResponse("post") def get(self,request): return HttpResponse("get") urls.py配置 from app.views import MyView url(r"正则",MyView.as.view(name="xxx"))
request.method 请求方式
request.GET get请求的所有数据,是一个字典
request.POST post请求的所有数据,是一个字典
request.path 请求路径
request.get_full_path() 获取带有参数的路径
request.META() 请求头信息,是一个字典
五. response对象
HttpSponse("xxx") 响应一个字符串,可以识别标签
render(request,".html"[**kwargs]) 响应一个页面,参数可以渲染页面中需要的
redirect() 重定向,跳转到一个页面