码迷,mamicode.com
首页 > 其他好文 > 详细

7)django-实例(cbv)

时间:2017-10-28 22:00:49      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:实例   action   port   包括   isp   path   admin   反射   war   

CBV(class base view)一个url根据method方式调用相应的方法。method常用有get,post

如果是GET请求,Home类会调用get方法,如果是POST提交数据,则类会调用 post方法

 

 CBV与FBV经常用到,建立两种方式都使用。

1)urls.py  

url(r‘^home/‘, views.Home.as_view()), 以不同的方式执行不同的方法,比如get,post等 #views.类名.as_view()
from app01 import views
urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^index/‘, views.index),
    url(r‘^login/‘, views.login),
    url(r‘^home/‘, views.Home.as_view()),
    url(r‘^detail-(\d+).html‘,views.detail), #动太路由
]

 2)views.py

    #CBV django内容是怎么完的过程?
    #根据提交的头部和内容,头部包括URL,method, django通过反射找到相应的方法。
   所以django肯定有dispath,可以自己重写dispath,增加自己功能


  需要导入from django.views import View
#CBV
from django.views import View
class Home(View):
    #CBV django内容是怎么完的过程?
    #根据提交的头部和内容,头部包括URL,method, django通过反射找到相应的方法。所以django肯定有dispath,可以自己重写dispath,增加自己功能

    def dispatch(self, request, *args, **kwargs):
        print("before")
        result=super(Home,self).dispatch( request, *args, **kwargs)#调用父类的dispath
        print("after") #相档于装饰器功能
        return result

    def get(self,request):
        print(request.method)
        return render(request,"home.html")

    def post(self,request):
        print(request.method)
        return render(request,"home.html")

3.模板home.html

  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/static/common.css">
</head>
<body>
    <form action="/home/" method="post">
        <input type="text" name="user" />
        <input type="submit" value="+">
    </form>
    <script src="/static/jquery-1.12.3.js"></script>
</body>
</html>

 

7)django-实例(cbv)

标签:实例   action   port   包括   isp   path   admin   反射   war   

原文地址:http://www.cnblogs.com/lixiang1013/p/7748107.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!