实战Django之views视图的(FBV,CBV,FBV装饰器,CBV装饰器)
2019-01-18 21:02
495 查看
版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/Burgess_zheng/article/details/86545000
目录篇:Django之前后端交互篇目录 点击跳转
主篇:Django之view视图处理【交互篇二】点击跳转
目录
- 1.创建Django项目
- 2.创建app(并且app目录下创建一个urls.py文件)
- 3.定义请求的URL路由分发
- 4.定义app下的URL路由
- 5.定义FBV,CBV,FBV装饰器,CBV装饰器
- 6.定义响应的html文件
- 7.启动Django
- 8.浏览器访问URL结果
1.创建Django项目
Django之创建项目【二】:https://blog.csdn.net/Burgess_zheng/article/details/86505526
2.创建app(并且app目录下创建一个urls.py文件)
进入项目目录下
创建app命令:
F:\Burgess\Python\pycharm实验脚本\test\project_burgess>python manage.py startapp submit_views
3.定义请求的URL路由分发
路径:project_burgess/project_burgess/urls.py
[code]from django.contrib import admin from django.urls import path,re_path #Django版本2.0以上 from project_burgess import views from django.conf.urls import url #Django2.0 from django.conf.urls import include urlpatterns = [ path('admin/', admin.site.urls), #提交各种数据数据类型测试 re_path('submit/', include("submit_views.urls")), # url(r'^submit/', include("submit_views.urls")), ]
4.定义app下的URL路由
路径:project_burgess/submit_views/urls.py
[code]__author__ = "Burgess Zheng" #!/usr/bin/env python #-*- coding:utf-8 -*- from django.urls import path,re_path #Django版本2.0以上 from submit_views import views from django.conf.urls import url #Django2.0 app_name='namespace' urlpatterns = [ #FBV re_path('fbv/', views.fbv), #url(r'^fbv', views.submit_handle), #CBV re_path('cbv/', views.Cbv.as_view()), #url(r'^cbv', views.Cbv.as_view()), ]
5.定义FBV,CBV,FBV装饰器,CBV装饰器
路径:project_burgess/submit_views/views.py
[code]#装饰器 def auth(func): def inner(request,*args,**kwargs): print('Im decorator 我是装饰器') #这里可以进行session或者cookie验证之类的操作 return func(request,*args,**kwargs) return inner @auth #函数装饰我们自定义的装饰器 def fbv(request): print(request.method) print('装饰器认证通过,说明你是有效用户') return render(request,'fbv_Cbv.html',{'name':'fbv'}) ####被装饰类Order(三种装饰模式)##### #第一种装饰类里面某个指定函数 #第二种装饰类里面所有的函数(基于该类的父类的dispatch方法) #第三种装饰类里面所有的函数(基于该类的父类的dispatch方法) from django.views import View from django.utils.decorators import method_decorator#装饰需求模块 @method_decorator(auth,name='dispatch')#第三种装饰形式 class Cbv(View): #@method_decorator(auth)#第二种装饰形式 def dispatch(self, request, *args, **kwargs): # 请求来了先调用dispatch该方法,等于该方法接收了用户所有的请求内容 print('before') result = super(Cbv, self).dispatch(request, *args, **kwargs) # super:调用父类View初始化信息 ,这里就代表着调用了父类View的dispatch方法 # 首先用户请求过来 # 父类的dispatch接收到了用户请求(所有的数据), # 1.执行打印显示before # 2.执行super,super是调用了父类的View的dispatch的执行(进行判断请求方式通过反射调取相应方法执行) # 3.相应的方法执行完毕以后结果赋值个result, # 4假如是get请求 我们写的get方法处理结果是打印该请求,返回home.html内容 # 5.执行打印显示after # 6.返回给用户数据 # 最终执行后台会打印显示:before GET after print('after') return result #@method_decorator(auth) #第一种装饰形式 def get(self, request): # 自动识别,如果用户请求方式:get,那么自动调用该方法执行结果 print(request.method) print('装饰器认证通过,说明你是有效用户') return render(request, 'fbv_Cbv.html',{'name':'Cbv'}) def post(self, request): print(request.method) # 自动识别,如果用户请求方式:post,那么自动调用该方法执行结果 return render(request, 'fbv_Cbv.html',{'name':'Cbv'})
6.定义响应的html文件
路径:project_burgess/templates/fbv_Cbv.html
[code]<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>{{ name }}</h1> </body> </html>7.启动Django
手动:python manage.py runserver 127.0.0.1:8000
pycharm:
8.浏览器访问URL结果
get请求
查看后台
get请求
查看后台
目录篇:Django之前后端交互篇目录 点击跳转
主篇:Django之view视图处理【交互篇二】点击跳转
相关文章推荐
- Django之view视图处理(FBV,CBV,装饰器,前后端交互各种数据类型和响应,请求头相关信息)【交互篇二】
- Django---view视图FBV&CBV
- [Django实战] 第9篇 - 表单、视图、模型、模板的交互
- Django(CBV/FBV/COOKIE/SESSION/TEMPLATE/HEADER)
- Django2.0-views(7)-类视图,paginator,page
- Python/Django(CBV/FBV/ORM操作)
- Django views视图请求对象HttpRequest
- Django-中的FBV和CBV
- Django之FBV&CBV
- Django - - - -视图层之视图函数(views)
- Django CBV(Class-Base View) vs FBV(Function-Base View)
- Django views视图响应对象
- django的通用视图 (generic views)
- django实战1-使用视图和模板显示多行
- Django之FBV&CBV
- django使用通用视图 django.views.generic
- Django - CBV、FBV
- django路由系统,FBV,CBV,ORM操作
- Django fbv 和 cbv 简述
- Django中,模型(models),视图(views)和模板的区别和应用