【问题标题】:why is my code skipping my index page?为什么我的代码会跳过我的索引页?
【发布时间】:2017-04-22 23:15:05
【问题描述】:

每当我访问登录站点 (0.0.0.0:5000/) 时,页面都会立即恢复到 0.0.0.0:5000/admin。关于为什么会发生这种情况的任何想法?

在英特尔爱迪生上运行 yocto。通过 putty 编辑

@app.errorhandler(404)
@app.errorhandler(500)
def errorpage(e):
    return render_template('404.html')

def login_required(f):
    @wraps(f)
    def wrap(*args, **kwargs):
        if 'logged_in' in session:
            return f(*args, **kwargs)
        else:
            flash('please login first.')
            return redirect (url_for('index'))
    return wrap

@app.route('/', methods=['GET','POST'])
def index():
    error = None
    if  request.method == 'POST':
        if request.form['username'] != 'admin' or request.form['password'] != 'password':
            error = 'invalid attempt.'

    else:
        session['logged_in'] = True
        return redirect(url_for('admin'))
    return render_template('index.html', error = error)

@app.route('/logout')
def logout():
    session.pop('logged_in', None)
    return render_template('/logout.html')

@app.route('/admin',methods=['GET','POST'])
@login_required
def admin():

【问题讨论】:

  • 如果选择了字体大小和颜色,该图像几乎无法阅读。请粘贴实际代码。
  • 知道如何通过putty从vi中复制粘贴出来吗?
  • 看看这是否有帮助:stackoverflow.com/questions/16741511/…
  • 使用 pscp 得到它。提前致谢

标签: html flask flask-login intel-edison


【解决方案1】:

看起来只要有人用GET 访问该页面,它就会被设置为logged_in = True 并重定向到/admin

@app.route('/', methods=['GET','POST'])
def index():
    error = None
    if  request.method == 'POST':
        if request.form['username'] != 'admin' or request.form['password'] != 'password':
            error = 'invalid attempt.'

    else: # this is always triggered for GETs, even if not logged in!
        session['logged_in'] = True
        return redirect(url_for('admin'))
    return render_template('index.html', error = error)

相反,您应该检查他们是否已经登录,并在检查凭据后改为在 POST 块中设置 logged_in 属性。

实际上,您的 else 块上的缩进似乎已关闭:

@app.route('/', methods=['GET','POST'])
def index():
    error = None
    if  request.method == 'POST':
        if request.form['username'] != 'admin' or request.form['password'] != 'password':
            error = 'invalid'
        else: # this indenting should work now
            session['logged_in'] = True
            return redirect(url_for('admin'))

    return render_template('index.html', error = error)

【讨论】:

  • 成功了!谢谢你。关于为什么在相关字段中使用管理员和密码会激活错误处理程序的任何建议?
  • 不知道抱歉,Flask 不是我通常使用的东西。
猜你喜欢
  • 2015-06-03
  • 2022-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
  • 2020-05-15
  • 2016-07-07
相关资源
最近更新 更多