Ошибка сборки python/flask с url_for, дополнительно Нет

Я не могу понять, откуда берется лишний None. Я пробовал эти ссылки безрезультатно: Ошибка сборки с переменными и url_for в Flask как использовать Flask Jinja2 url_for с несколькими параметрами

Кроме того, я не использую BluePrint.

Вот мой шаблон users.html:

<a href="{{ url_for('user_page', user_id=user.user_id) }}"> {{ user.name }} </a>

Вот два разных файла user.py, которые я пробовал:

@app.route('/user')
def user_page():
    args = show_user_parser.parse_args()
    user_id = args['user_id']
    return page_for_user(user_id)

@app.route('/user/<user_id>')
def user_page(user_id):
    return page_for_user(user_id)

def page_for_user(user_id):
   try:
       cur.execute(list_user_detailed_query, (user_id,))
   except psycopg2.OperationalError:
       return render_template('error.html')
   except psycopg2.IntegrityError:
       connection.rollback()
       return render_template('error.html')
   data = cur.fetchone()
   return render_template('user.html',
                          name=data['name'],
                          email=data['email'],
                          undergrad=data['undergrad'],
                          cv=data['cv'])

Вот ошибка сборки:

BuildError: ('user_page', {'user_id': '1'}, None)

person Todd Anderson    schedule 14.05.2014    source источник
comment
что делает эта функция page_for_user()? Можете ли вы показать код для него?   -  person codegeek    schedule 15.05.2014
comment
добавлен код, хотя он, вероятно, не имеет значения, поскольку ввод вручную /user/id или /user?user_id=... работал нормально.   -  person Todd Anderson    schedule 16.05.2014


Ответы (1)


Вы назвали оба маршрута «user_page», так что могу поспорить, что первый (который не принимает аргументов) выигрывает, и когда вы пытаетесь создать URL-адрес с аргументами, он терпит неудачу. Переименуйте функции, чтобы они были разными, и это должно исправить ситуацию.

person Rachel Sanders    schedule 15.05.2014
comment
Я показал оба фрагмента кода, но оба на самом деле не зарегистрированы одновременно. Я бы закомментировал одну def user_page: при запуске моего сервера. - person Todd Anderson; 15.05.2014