Я столкнулся с проблемой с url_for
, когда она не будет автоматически переназначать переменную прямо в URL, потому что есть два маршрута.
Мой вариант использования - это API, где создается объект вернет те же данные, что и при выполнении команды GET.
Вот пример кода:
@app.route('/test', methods=['POST'])
@app.route('/test/<string:name>', methods=['GET'])
def test(name=None):
if request.method == 'POST':
return redirect(url_for('test', name='xyz'))
return name
Если удаляется первый app.route
, то url_for('test', name='xyz')
будет правильно возвращать "test/xyz"
.
Однако, с обеими app.route
строками, он вместо этого возвращает "test?name=xyz"
. Это приводит к тому, что name
становится None
, где переменная фактически находится в request.args['name']
.
Я не хочу делать if name is None: name=request.args.get('name')
, так что есть ли способ заставить его смотреть только маршруты с GET
методом? Мой случай сейчас достаточно прост, я мог бы просто сделать url_for('test')+'/xyz'
, но кажется, что должен быть лучший способ сделать это.