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

发布于 2022-09-02 01:57:44 字数 1183 浏览 28 评论 0

  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函数为什么有输出啊,按理说不该输出啊。。?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

呆萌少年 2022-09-09 01:57:44

我不信,去试了一下:

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

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文