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

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题