- # decorator.py
- # 修飾函數
- def decorator(fun):
- def ifun(*args, **kwargs):
- args = (i+1 for i in args)
- return fun(*args, **kwargs)
- return ifun
- # 被修飾函數1
- def fun1(x,y):
- return x+y
- fun1 = decorator(fun1)
- # 被修飾函數2
- def fun2(x,y,z):
- return x+y+z
- fun2 = decorator(fun2)
- # 測試代碼
- a = 3
- b = 4
- c = 5
- print fun1(a,b)
- print fun2(a,b,c)
這段代碼運行的結果是:
- 9
- 15
大家看看上面的代碼,fun1和fun2可以理解爲你要訪問的url要執行的操作,而decorator就是你要做的權限檢查,在這種方式下你的代碼會很乾淨,不是嗎?
如果有興趣,可閱讀django.contrib.admin.views下面的main.py decorators.py