django的视图函数

一.视图函数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")
简单的FBV

  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"))
简单的CBV

三. 给视图函数加装饰器

  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")
FBV装饰器

  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"))
CBV装饰器

四. request对象

  request.method  请求方式

  request.GET    get请求的所有数据,是一个字典

  request.POST     post请求的所有数据,是一个字典

  request.path    请求路径

  request.get_full_path()  获取带有参数的路径

  request.META()      请求头信息,是一个字典

五. response对象

  HttpSponse("xxx")    响应一个字符串,可以识别标签

  render(request,".html"[**kwargs])  响应一个页面,参数可以渲染页面中需要的

  redirect()       重定向,跳转到一个页面

原文地址:https://www.cnblogs.com/q767498226/p/10440893.html