python - Django自定义装饰器的不能正常运行的问题

 用户ll08sq9y2x 发布于 2022-10-29 17:45
  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函数为什么有输出啊,按理说不该输出啊。。?

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

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

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

    2022-10-31 18:52 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有