• Django之CBV和FBV


    Django之CBV和FBV

      CBV和FBV是C和F的区别:

        C是Class,F是Function

      在请求中,有GET请求和POST请求。

      在写CBV时,url是可以对应一个类的,在类中,分别写出GET和POST的方法。

      eg:在url中:

    url(r'^login.html$',views.Login)

        在views中:Class根据url的提交方式,决定使用get方法,还是post方法。

    class Login(request):
    def get(self):
        pass
    def post(self):
        pass   

      在请求来时,Login会去判断来个请求类型是post还是get。但是要先继承一个方法,django.views 中的 View。

    from django.views import View
    class Login(View):
        def get(self,request):   #request会封装请求的所有数据
            #return HttpResponse('Login.get')
         return render(request,'login.html') def post(self,request):
         print(request.POST.get('user')) return HttpResponse('Login.post')

     login.html

    <body>
        <form method='POST' action='/login.html'>
            <input type='text' name='user'/>
            <input type='submit' value='提交'/>
        </form>
    </body>

      注意:form表单递交,是有POST和GET。ajax提交除了POST和GET还有好多提交方式。

      这里的request封装了request的请求的数据。

      在CBV的url中,都要在view里叫as_view()。

    url(r'^login.html$',views.Login.as_view())

      在class View 方法中,有四种常见的方法:

        get查, post创建, put更新,delete删除

      这四种方法是Ajax提交是才能用的,get和post可以在from表单用。

    ----------------------------- 分割线 -----------------  

      在写C和F时,url找到相应中的类和函数中的请求方法,是用的反射getattr来实现的。

      在View中,先会执行dispath函数,在dispath函数中,对请求进行分类,看请求是post还是get。

    def dispath(self,request,*args,**kwargs):
        obj = surper(Login,self),dispath(request,*args,**kwargs)
        return obj

      这个dispath就相当于一个装饰器。

    -------- END ---------

  • 相关阅读:
    在c#中用指针操作图片像素点
    获取exe目录
    MySQL数据库之安装
    简介、变量、常数、if、基础数据类型、注释、input()
    day 1 预习
    Typora基础
    内存流
    System.in流
    Java&nbsp;IO&nbsp;操作
    字节流、字符流
  • 原文地址:https://www.cnblogs.com/george92/p/8506151.html
Copyright © 2020-2023  润新知