zoukankan      html  css  js  c++  java
  • Django基础三之视图函数

    一 、定义:

    FBV(function base views) 就是在视图里使用函数处理请求。之前都是FBV模式写的代码,所以就不写例子了。

    CBV(class base views) 就是在视图里使用类处理请求。

    CBV优点:

    1. 提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)
    2. 可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性

    二、使用步骤:

    views中:

    1、导入:from django.views import view

    2、创建新类(继承View类):class LoginView(View):

    3、重写dispatch方法:def dispatch (self,request,*args,**kwargs):

    4、其中需执行父类的dispactch:ret=super().dispatch(request,*args,**kwargs)

    5、最后需返回ret值(get或post的值):return ret (send到浏览器)

    urls中:

    url(r'^login/', views.LoginView.as_view())

    源码:1.as_view()--view    2用户请求到了 view     3view里面执行了dispatch,反射找到请求方法对应的自己视图的方法。

    三、装饰器

    FBV:

    #装饰器
    def xxx(func1):
    def inner(request,*args,**kwargs):
    print('xx1')
    ret = func1(request,*args,**kwargs)
    print('xx2')
    return ret
    return inner
    @xxx
    def index(request):pass

    CBV:

    方式一:
    @method_decorator(xxx)
    def dispatch(...):....                    放在dispatch上面,相当于装饰了get和post方法。

    方式二:
    @method_decorator(xxx)
    def get(self,request):pass
    def post(self,request):pass        只加在get上面,相当于只装饰了get方法。

    方式三:
    @method_decorator(xxx,name='get')
    class IndexView(View):              放在整个类的上面,须有name指示装饰谁,不可连写,装饰几个写几行。

    四、request对象

    request.body:#得到用户提交数据的原始数据类型 b'username=chao&passowrd=123'
    request.GET
    request.POST
    request.method# 获取请求方法。请求中使用的HTTP方法字符串表示,全大写表示
    request.path_info  #获取用户请求路径,返回用户当前访问的url,不包括域名,不包括参数
    request.get_full_path() #获取除域名之外的全路径,包括请求参数
    request.META # 获取请求头的元信息
    request方法

    五、response对象

    HttpResponse('xxx')  #返回一个字符串(封装了 响应头+专程byte类型)
    render(request,'index.html',{'name':'chao'}) 
    #相应的html文件中: index.html  {{ name }}--chao
    redirect('/login/')# -- 给浏览器发送了一个重定向的请求,浏览器拿到你要重定向的url,然后自动发送了一个ip+端口+路径/login/,的一个请求,后端在配置对应url('^login/',views.login)
    三个方法
  • 相关阅读:
    Asp.net上传文件,过滤不符合要求格式的文件
    取得文件真正扩展名类型
    ORA12505: TNS: 监听程序当前无法识别连接描述符中所给出的 SID
    Android显示图片自适应(控件+网页)
    Android代码资源的国际化
    Eclipse下加载Android SDK源码
    Android 中Webview 自适应屏幕
    网页图片缩放(js)
    android webview 缩放及换行
    subclipse用法
  • 原文地址:https://www.cnblogs.com/liangsha0/p/10896749.html
Copyright © 2011-2022 走看看