在其他函数中未调用装饰器

尼尔森

似乎装饰器(@need_to_login)在我的代码中不起作用,因为当我打开网页时,它直接进入主页而不是登录页面。这是下面的简单代码。如果有任何明显的错误,请告诉我。我对此很陌生。谢谢

from flask import Flask, render_template, redirect, url_for, request, session, flash
from functools import wraps

app = Flask(__name__)
app.secret_key='nelliville'

def need_to_login(f):
    @wraps(f)
    def wrap(*args, **kwargs):
        if 'logged_in' in session:
            return f(*args, **kwargs)
        else:
            flash('You need to log in first')
            return redirect(url_for('login'))
    return wrap

@app.route('/login', methods = ['GET', 'POST'])
def login():
    error = None
    if request.method =='POST':
        if request.form['username'] != 'admin' and request.form['password'] != 'admin':
            return 'Invalid credentials'    
        else:
            session['logged_in'] = True
            return redirect(url_for('home'))
    return render_template('login.html', error=error)

@app.route('/')
@need_to_login
def home():
    return render_template('home.html')

@app.route('/logout')
@need_to_login
def logout():
    session.pop('logged_in', None)
    return redirect(url_for('login'))

if __name__ == "__main__":
    app.run(debug=True)
Arjun

好的,所以我不能发表评论,因为我没有足够的声誉,因为我是新来堆栈溢出的。尝试删除@wraps(f)您的need_to_login(f)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在其他控制器中调用范围函数

未调用函数装饰器

如何在其他函数内部调用中函数?

[Python]在其他函数中调用的数组函数

如何调用在其他控制器中定义的函数?

装饰器在其他任何与此“ this”上下文造成混乱之前调用方法

您如何在其他函数中调用OnVolumeDown?

Android Kotlin在其他活动中调用函数

如何在其他脚本的任何其他函数中调用包含参数的函数?

未调用 Angular 属性装饰器函数

在其他函数中定义函数

在其他构造函数的调用中调用构造函数时,C ++编译错误

在其他方法/函数中的构造函数中调用对象

Python:通过修复其他函数来减少函数中参数数量的装饰器

在其他控制器中在Application控制器中定义的调用方法

在不使用全局函数的情况下在其他函数中调用变量

在其他函数中调用mu函数时,如何使它们停止发挥联合作用?

使用Vue.js在其他函数中调用onclick函数

在其他函数中调用时,Javascript函数不起作用

在其他函数中多次调用一个函数

使变量在其他函数中可用

在其他函数中访问变量

jQuery的添加函数在HTML attr中回调在其他事件中调用

调用向量析构函数或在其他线程中清除

当我尝试在其他函数中调用Phaser.Group.create()时出错

在Javascript中,如何从该函数中调用但在其他位置定义的函数中引用函数范围的变量?

在其他控制器中更改后变量未更新

Typescript装饰器构造函数覆盖包括其他参数

方法在其他路由器上调用,Vuejs