FBV

 django CBV & FBV
- FBV function basic view
a. urls 设置
urls(r'^test.html$', views.test)
b. views写法
def test(request):
return ...
c. FBV添加装饰器
- 定义装饰器
def wrapper(func):
def inner(*args, **kwargs):
return func(*args, **kwargs)
return inner - 使用装饰器方法
@wrapper
def test(request):
pass

CBV

    - CBV class basic view
a. urls 设置
urls(r'^login.html$', views.Login.as_view())
b. views写法
from django.views import View
class Login(View):
def get(self,request):
return render(request, 'login.html') def post(self,request):
return HttpResponse("dd")
c. 注意事项
- urls 里面 views.类名.as_view() 固定写法
- views的类
a.需要继承from django.views import View
b.函数需要一个参数request
c.函数名字:get, post, put, delete
- 函数名字对应请求类型
- form表单只能是get和post提交
- ajax提交数据可以是get, post, put, delete
- get(查),post(创建), put(更新), delete(删) d.dispatch函数实现get, post执行前后定制一些操作
- dispatch作用
函数发送请求到url后,CBV第一步调用的是dispatch函数,然后再执行get,post函数
其实是在dispatch函数里面调用get,post函数
- 自定义dispatch函数
def dispatch(self, request, *args, **kwargs):
print('before')
obj = super(Login,self).dispatch(request, *args, **kwargs)
print('after')
return obj

CBV添加装饰器

        f CBV添加装饰器(django有限制)
- 定义装饰器
def wrapper(func):
def inner(*args, **kwargs):
return func(*args, **kwargs)
return inner - 导入django使用FBV装饰器的方法
from django.utils.decorators import method_decorator - 添加装饰器方式
. 在类里面的多个函数添加
class Foo(View): @method_decorator(wrapper)
def get(self,request):
pass @method_decorator(wrapper)
def post(self,request):
pass .对类的多个函数都添加装饰器
@method_decorator(wrapper, name='post')
@method_decorator(wrapper, name='get')
class Foo(View): .对类所有函数添加装饰器
@method_decorator(wrapper, name='dispatch')
class Foo(View): # 请求来了,到dispatch函数,dispatch根据反射调用不同的函数

最新文章

  1. MyEclipse破解(MEGen.java)
  2. 最长公共子序列(LCS)
  3. Spark Streaming中向flume拉取数据
  4. javascript预解析和作用域
  5. bzoj3244
  6. 【Java】Java8新增的Lambda表达式_学习笔记
  7. How to change current process to background process
  8. uiautomator +python 实现安卓自动化
  9. 关于系统首页绘制问题(ext布局+c#后台加入数据)经html输出流输出响应client
  10. jsp中EL表达式不起作用的问题1
  11. Tomcat8远程访问manager,host-manager被拒绝403
  12. 分布式系统关注点(17)——先写DB还是「缓存」?
  13. CADisplayLink以及定时器的使用
  14. Service Mesh
  15. python之名称空间
  16. fork多线程进程时的坑(转)
  17. Docker用途 & 和tomcat的区别
  18. 实验吧ctf题库web题wp
  19. iOS 严重问题解释(crash)
  20. 简述组件化解决方案CTMediator与MGJRouter的主要思想

热门文章

  1. LeetCode Find Peak Element 找临时最大值
  2. 无法通过CTRL+空格及SHIFT+CTRL调出输入法的解决方案
  3. 论overflow滚动的重要性
  4. 配置Maven镜像与本地缓存
  5. python剑指offer 包含min函数的栈
  6. spring mvc + swagger 配置
  7. ambari过程中要求各个节点时间同步
  8. 如何着手学习一个新的PHP框架
  9. Rhadoop安装
  10. js call 函数