2017-11-24 17 views
0

Es ist die einfachste Sache zu fragen, aber @app.route('/') funktioniert nicht auf meinem Linux-Server.Flask routing funktioniert nicht

Unten ist der Code:

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() 

Sehr einfache App, die alle funktionieren auf dem lokalen Rechner in Ordnung, aber nicht auf meinem Linux-Server.

z. wenn ich http://xxx.xxx.xxx.xxx/projectname laden ---- zeigt es Hallo ABC!

Wenn ich http://xxx.xxx.xxx.xxx/projectname/driftking laden - es leitet mich auf http://xxx.xxx.xxx.xxx (dh Homepage meines Servers)

Wenn ich http://xxx.xxx.xxx.xxx/projectname/test/search laden - 404 Fehler nicht

gefunden

Wenn ich http://xxx.xxx.xxx.xxx/projectname/login laden - es leitet mich auf http://xxx.xxx.xxx.xxx (dh meinen Servers der Homepage)

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

^^ Das ist, was ich am Terminal bekommen. Ich verstehe nicht, warum ich jedes Mal zwei führende Schrägstriche bekomme.

Aber wenn http://xxx.xxx.xxx.xxx/projectname/insert-any-word/login, meine Post req wird ausgeführt. Zur gleichen Zeit auf der lokalen Maschine bekomme ich nicht zwei führende Schrägstriche // auf den Pfad und damit die Anfrage wird verarbeitet.

+3

Entfernen Sie den zweiten Aufruf 'app.run()'. –

+0

@ArtsiomPraneuski, entfernt. Funktioniert immer noch nicht. '127.0.0.1 - - [24/Nov/2017 21:14:07]" POST // Login HTTP/1.1 "405-' – driftking9987

+1

Verwenden Sie einen Reverse-Proxy auf dem Server? Es ist wahrscheinlich falsch konfiguriert. – jordanm

Antwort

-1

Es gibt ein paar Dinge, die falsch sind, aber versuchen Sie dies, Sie benötigen einen Proxy, um mit der Umleitung zu helfen.

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

Können Sie mir bei der Umleitung von Artikeln helfen? – driftking9987

+0

zuerst, hat meine Antwort dein Problem gelöst? –

+0

Eigentlich arbeite ich gerade an der Umleitung, so etwas suche ich auch. Und die Antwort, die Sie zur Verfügung gestellt haben, versuchen Sie das in wenigen Minuten und informieren Sie. Aber da du erwähnt hast, dass ich etwas Hilfe beim Umleiten benötige, habe ich gehofft, diesen Teil zuerst zu überprüfen. – driftking9987