Я пытаюсь реализовать шаблон перенаправления, аналогичный тому, что делает StackOverflow:
@route('/<int:id>/<username>/')
@route('/<int:id>/')
def profile(id, username=None):
user = User.query.get_or_404(id)
if user.clean_username != username:
return redirect(url_for('profile', id=id, username=user.clean_username))
return render_template('user/profile.html', user=user)
Вот простая таблица того, что должно произойти:
URL Redirects/points to
====================================================
/user/123 /user/123/clean_username
/user/123/ /user/123/clean_username
/user/123/foo /user/123/clean_username
/user/123/clean_username /user/123/clean_username
/user/123/clean_username/ /user/123/clean_username/
/user/125698 404
Сейчас я могу получить доступ к профилю с помощью /user/1/foo
, но /user/1
создает BuildError
. Я пробовал аргумент ключевого слова alias=True
и что-то с defaults
, но я не совсем уверен, что не работает.
Как мне перенаправить один маршрут на другой так?