python - Django自定义装饰器的不能正常运行的问题
PHPz
PHPz 2017-04-17 17:12:03
[Python讨论组]
  1. 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函数为什么有输出啊,按理说不该输出啊。。?

PHPz
PHPz

学习是最好的投资!

全部回复(1)
黄舟

我不信,去试了一下:

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
这里执行了吗?
这里为何不执行?

发现一切正常。因此得出结论:

把服务器关掉重开就好啦。。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号