簡體   English   中英

燒瓶退縮錯誤

[英]flask Indentation errors for returns

我的燒瓶應用程序始終出現縮進問題。
特別是當我嘗試在return語句之前聲明變量時。 同樣,當我嘗試在return語句之前使用session['logged_in] = True

試圖尋找任何跡象表明我在構造錯誤,我想念什么?

from app import app
from flask import render_template, url_for, request, url_for, redirect, session
from form import NewUser

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

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

@app.route('/login', methods=['POST', 'GET'])
def login():
    form = NewUser()

    if request.method == 'POST':
        if request.form['username'] != 'admin' and request.form['password'] != 'password':
            error = "uername/password incorrect"
            return render_template('login.html', form=form, error=error)
        else:
            session['logged_in'] = True
            return redirect(url_for('secretarea'))
    return render_template('login.html', form=form, error=error)


@app.route('/secretarea')
def secretarea():
    if session['logged_in'] = True:
        return "this area is a secret"
    else:
        error="please log in"
        return render_template('login.html', error=error)

我得到的錯誤是這個

  File "runserver.py", line 2, in <module>
    from app import app
  File "/home/roman/flask/myblog/app/__init__.py", line 9, in <module>
    from app import views
  File "/home/roman/flask/myblog/app/views.py", line 21
    return render_template('login.html', form=form, error=error)
    ^
  IndentationError: unexpected indent

您的登錄視圖結構不正確。 在最后一個返回行中,您嘗試傳遞在if條件中定義的'error'變量。 另外,您無需兩次返回login.html模板。 我將視圖重新排列為:

@app.route('/login', methods=['POST', 'GET'])
def login():
    form = NewUser()
    error='' # initialize the error variable outside the if loop
    if request.method == 'POST':
        if request.form['username'] != 'admin' and request.form['password'] != 'password':
            error = "uername/password incorrect"
        else:
            session['logged_in'] = True
            return redirect(url_for('secretarea'))

    # This line will execute if GET request OR the username/password checks fails
    return render_template('login.html', form=form, error=error)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM