2017-04-22 14 views
0

私はログインサイト(0.0.0.0:5000/)に行くと、すぐにページは0.0.0.0:5000/adminに戻ります。なぜこれが起こっているのかについてのアイデアはありますか?私のコードがインデックスページをスキップしているのはなぜですか?

intel edisonでyoctoを実行しています。パテ

@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(): 
+0

画像は、フォントサイズや色の選択とかろうじて読み取り可能であること:あなたのインデントがあなたのelseブロックにオフになっているよう

実際には、それだけに見えます。実際のコードを貼り付けてください。 –

+0

パテを使ってviからコピーしてペーストする方法は? – Zane

+0

これが役立つかどうかを確認してください:http://stackoverflow.com/questions/16741511/copy-from-putty-vim-visual-mode-to-windows-clipboard –

答えて

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プロパティを設定する必要があります。

@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) 
+0

は働いた!ありがとうございました。関連するフィールドで管理者とパスワードを使用する理由についてのアドバイスは、エラーハンドラを有効にしますか? – Zane

+0

いいえアイデア申し訳ありませんが、フラスコは私が通常使用するものではありません。 –

関連する問題