2015-06-26 3 views
1

Я прохожу через программу быстрого запуска Flask, но примеры routing with variables не работают для меня.Пример флеш-быстрого запуска - 404 с завершающей косой чертой

from flask import Flask 
app = Flask(__name__) 

@app.route('/') # fine 
def index(): 
    return 'Index Page' 

@app.route('/hello') # fine 
def hello(): 
    return 'Hello World!' 

@app.route('/user/<username>') # <- fails unless trailing slash here 
def show_user_profile(username): 
    return 'User {}'.format(username) 

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

Я также попробовал код в точности как в руководстве. Ожидается ли ошибка в моей первой точке пули? Предполагается, что код в версии быстрого запуска должен работать? Или я что-то не понял?

Я использую Python 2.7.10, колба 0.10.1, 0.10.4 WERKZEUG

ответ

1

Я попробовал этот пример в python2 и она отлично работает, но проблема Python3 вы описали происходит. Вы используете 3-ю версию? И если вы уверены, что вам это действительно нужно?

Посмотрите на этот http://flask.pocoo.org/docs/0.10/python3/#python3-support

+0

Спасибо, я использую 2.7 - добавлена ​​информация о версии на вопрос. – YXD

-2

Этот код работает на моей машине с Python 2.7 на нем.

Если вы используете несколько параметров, вы пропустили {0} в своем коде.

from flask import Flask 
app = Flask(__name__) 

@app.route('/') # fine 
def index(): 
    return 'Index Page' 

@app.route('/hello') # fine 
def hello(): 
    return 'Hello World!' 

@app.route('/user/<username>') # <- fails unless trailing slash here 
def show_user_profile(username): 
    if request.url[-1] != '/': 
     return redirect(request.url + '/') 
    return 'User {0}'.format(username) 

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

Как вы будете наблюдать, я добавил еще две строки кода

if request.url[-1] != '/': 
     return redirect(request.url + '/') 

линия выше гарантирую, что маршруты с лидирующим слэшем все равно будут работать. Вам понадобится манипулировать любыми другими path вместо / в случае необходимости. Попробуйте этот код.

+0

Спасибо, но '' {} '. Format (a_string) 'отлично подходит для Python 2 и 3 - вы можете опустить позицию аргументов формата. В любом случае установка '0', как в вашем примере, не устраняет проблему для меня. – YXD

+0

Я думал, что вы можете использовать несколько параметров. Я обновил свой ответ - надеюсь, что это поможет вам. –

Смежные вопросы