2013-11-22 2 views
0

플라스크 앱에 들여 쓰기 문제가 계속 발생합니다.
특히 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 
+2

2 가지 - 1. 탭과 공백을 혼용하지 않도록하십시오. 2. 로그 아웃 엔드 포인트에'return' 문을 잊어 버렸습니다. – karthikr

답변

0

사용자의 로그인도이다. 마지막 반환 라인에서 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) 
+1

답장을 보내 주셔서 감사합니다. 나는 당신에게 upvote를 아직 줄 수있는 충분한 담당자를 가지고 있지 않지만 내가 할 때 다시 환호 할 것이다, 환호! – shoemonkey