如何解决Flask,视图装饰器没有效果
我的 Flask 应用程序中的视图装饰器出现了一些问题。它们似乎根本没有影响。这是查看用户是否登录的基本方法:
# Decorator to ensure user must be logged in
def login_required(f):
@wraps(f)
def decorated_function(*args,**kwargs):
if session.get("user_id") is None:
return redirect("/signin")
return f(*args,**kwargs)
return decorated_function
如果我在没有登录的情况下启动我的服务器并尝试直接访问某个页面 http://127.0.0.1:5000/profile
我会收到一个 Internal Server Error
。我想我应该被重定向到 /signin 但事实并非如此。
这是我的第二个装饰器:
# Decorator to ensure user is confirmed via email
def check_confirmed(f):
@wraps(f)
def decorated_function(*args,**kwargs):
if isConfirmed() == "no":
flash("Please enter secrect code sent to the given email address")
return redirect("/unconfirmed")
return f(*args,**kwargs)
return decorated_function
isConfirmed()
从我的数据库返回一个字符串并工作。但同样,它并没有将我重定向到 /unconfirmed
是我例外。
两个函数都在同一个文件中,我确实导入了 from functools import wraps
。我不知道我错过了什么,有人能发现错误吗?
如果需要从我的代码中获取更多信息,请随时告诉我。
在此先非常感谢并祝大家新年快乐!
解决方法
我需要一只橡皮鸭!
我忘记在路由函数下添加@login_required 和@check_confirmed。现在它可以正常工作了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。