2017-11-24 3 views
0

질문하는 것이 가장 기본적인 것이지만 @app.route('/')이 내 Linux 서버에서 작동하지 않습니다. 다음은 플라스크 라우팅이 작동하지 않습니다.

코드입니다 :

from flask import Flask, jsonify, request 
from app import models 
import json 
import time 

app = Flask(__name__) 
app.url_map.strict_slashes = True 


@app.route('/') 
def blank(): 
    return 'Hello ABC!' 

@app.route('/driftking') 
def blank2(): 
    return 'Hello driftking!' 

# dynamic route 
@app.route("/test/<search_query>") 
def search(search_query): 
    return search_query 

@app.route('/login', methods=['GET', 'POST']) 
def login(): 
    if request.method == 'POST': 
     return "POST METHOD" 
    elif request.method == 'GET': 
     return "GET REQUEST ARE NOT ALLOWED" 


if __name__ == '__main__': 
    app.run(debug=True) 
    app.run() 

아주 기본적인 응용 프로그램, 모든 로컬 컴퓨터가 아닌 내 리눅스 서버에서 잘 작동합니다.

예. 내가 http://xxx.xxx.xxx.xxx/projectname을로드하면 ---- Hello ABC가 표시됩니다!

내가 http://xxx.xxx.xxx.xxx/projectname/driftking을로드하는 경우 - 나는 http://xxx.xxx.xxx.xxx/projectname/login을로드하면 404 오류

를 찾을 수 없음 - - 나는 http://xxx.xxx.xxx.xxx/projectname/test/search로드 경우가 http://xxx.xxx.xxx.xxx (즉 내 서버의 홈페이지)

에 나를 리디렉션이 http://xxx.xxx.xxx.xxx에 나를 리디렉션 (즉, 내 서버의 홈페이지는)

127.0.0.1 - - [24/Nov/2017 19:37:01] "POST //login HTTP/1.1" 405 -

^^ 이것은 내가 터미널에서 무엇을 얻을 수 있습니다. 나는 매번 두 개의 선행 슬래시를 얻는 이유를 이해하지 못합니다.

하지만 http://xxx.xxx.xxx.xxx/projectname/삽입 할 단어/login을 수행하면 내 게시물 req가 실행됩니다. 로컬 머신에서 같은 시간에 두 개의 선행 슬래시를 얻을 수 없으므로 요청이 처리됩니다.

+3

두 번째'app.run()'호출을 제거하십시오. –

+0

@ArtsiomPraneuski가 제거되었습니다. 그래도 작동이 안되는. '127.0.0.1 - [24/Nov/2017 21:14:07] "POST // login HTTP/1.1"405-' – driftking9987

+1

서버에서 역방향 프록시를 사용하고 있습니까? 아마 잘못 구성되었을 것입니다. – jordanm

답변

-1

두 가지 문제가 있지만 시도해보십시오. 재 라우팅을 돕기 위해 프록시가 필요합니다.

from flask import Flask, jsonify, request 
from app import models 
import json 
import time 

from werkzeug.contrib.fixers import ProxyFix 

app = Flask(__name__) 
app.wsgi_app = ProxyFix(app.wsgi_app) 
app.url_map.strict_slashes = False 


@app.route('/') 
def blank(): 
    return 'Hello ABC!' 

@app.route('/driftking') 
def blank2(): 
    return 'Hello driftking!' 

# dynamic route 
@app.route("/test/<search_query>") 
def search(search_query): 
    return search_query 

@app.route('/login', methods=['GET', 'POST']) 
def login(): 
    if request.method == 'POST': 
     return "POST METHOD" 
    elif request.method == 'GET': 
     return "GET REQUEST ARE NOT ALLOWED" 


if __name__ == '__main__': 
    app.run(debug=True) 
+0

일부 재 라우팅 기사를 도울 수 있습니까? – driftking9987

+0

먼저 내 대답이 문제를 해결 했습니까? –

+0

실제로 경로 변경 작업 중이므로 좀 더 찾고 있습니다. 그리고 당신이 제공 한 답은 몇 분 안에 그것을 시험해보고 알려줄 것입니다. 그러나 당신이 thag을 언급 한 이래로 나는 도움이 필요할 것입니다. 나는 그 부분을 먼저 확인하기를 희망했습니다. – driftking9987

관련 문제