view.py的代码
from .tools import user_login_required # Create your views here. @user_login_required('1') def index(request): return render(request, "home.html")
2.tools.py代码
def user_login_required(user_type): print("------->>>" + user_type) def decorator(func): print("----->>>>>>> %s" % func.__name__) @functools.wraps(func) def wrapper(*args, **kw): print("这里为何不执行?") return func(*args, **kw) print("这里执行了吗?") return wrapper return decorator
运行结果显示
Django version 1.8.3, using settings 'MyWeb.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. ------->>>1 ----->>>>>>> index 这里执行了吗? [15/Feb/2016 15:31:56]"GET / HTTP/1.1" 200 1714
为何少打印了一句话啊???并且如果注释掉return func
index界面仍然正常显示
-----更新----
找到原因了,是因为我的url配置错了,首页的view函数不是这一个,即打开http://127.0.0.1:8000/
的时候没有执行上面这个函数,但是user_login_required
函数为什么有输出啊,按理说不该输出啊。。?
我不信,去试了一下:
February 15, 2016 - 11:04:47 Django version 1.8.3, using settings 'TEST.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. ------->>>1 ----->>>>>>> index 这里执行了吗? 这里为何不执行?
发现一切正常。因此得出结论:
把服务器关掉重开就好啦。。