2016-12-20 2 views
0

플라스크를 익히고 있고 다른 페이지에서 사용할 URL에 인수를 전달하는 데 문제가 있습니다. 예를 들어 /index에 양식이 있으며 양식 데이터를 인쇄 할 수있는 /results 페이지로 리디렉션하고 싶습니다. /results 페이지로 리디렉션 할 때 나는 405 오류 Method not allowed for the requested URL을받을플라스크 - URL에 인수 전달 - 405 오류

from flask import render_template 
from flask import redirect 
from flask import url_for 

from app import app 
from .forms import LoginForm 

@app.route('/') 
@app.route('/index', methods=['GET', 'POST']) 
def login(): 
    form = LoginForm() 
    if form.validate_on_submit(): 
     name = form.artistName.data 
     return redirect(url_for('result', name=name)) 
    else: 
     return redirect('/index') 
    return render_template('index.html', 
          title='Sign In', 
          form=form) 

@app.route('/result/<name>') 
def result(name): 
    return render_template('results.html') 

: 나의 시도는 이것이다. 양식의 결과를 인수로 사용하여 /results에 URL을 작성하고 싶습니다.

어떻게하면됩니까? 많은 감사

+1

POST 방법을 추가 할 수있을 것 같아요? –

+0

오류 추적 메시지를 게시하십시오. –

+0

'/ results' 페이지로 리디렉션 할 때 405 오류'요청 된 URL에 허용되지 않는 메소드 '가 나타납니다. – ggordon

답변

0

당신이

@app.route('/result/<name>') 

기본 HTTP 방법은 GET 의미

정의,이 실행될 때 을 :

if form.validate_on_submit(): 
    # POST method 
    name = form.artistName.data 
    # redirect Will use 'POST' 
    return redirect(url_for('result', name=name)) 

을 그래서, 당신은 Method not allowed for the requested URL을 얻었다.

난 당신이 당신이 직면하고있는 오류의 스택 트레이스를 추가 할 수 @app.route('/result/<name>')

+0

'@ app.route ('/ result/')'에'POST' 메소드를 추가하면 리다이렉트 루프가 발생합니다. 이유는 확실하지 않습니다. – ggordon

+0

예, 로그인으로 리디렉션합니다. 사실 Get 메서드 만 직접 리디렉션 할 수 있습니다. 이게 도움이 될 것 같아. @ app.route ('/ result/', methods = [ 'GET', POST ']) – bingtel