zoukankan      html  css  js  c++  java
  • 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 ---------

  • 相关阅读:
    java+opencv实现图像灰度化
    java实现高斯平滑
    hdu 3415 单调队列
    POJ 3368 Frequent values 线段树区间合并
    UVA 11795 Mega Man's Mission 状态DP
    UVA 11552 Fewest Flops DP
    UVA 10534 Wavio Sequence DP LIS
    UVA 1424 uvalive 4256 Salesmen 简单DP
    UVA 1099 uvalive 4794 Sharing Chocolate 状态DP
    UVA 1169uvalive 3983 Robotruck 单调队列优化DP
  • 原文地址:https://www.cnblogs.com/george92/p/8506151.html
Copyright © 2011-2022 走看看