python/flask 使用url_for时构建错误,额外为None

2 投票
1 回答
2217 浏览
提问于 2025-04-18 06:36

我搞不清楚这个多出来的 None 是从哪里来的。我试过这些链接,但都没用: Flask中变量和url_for的构建错误 如何在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)

1 个回答

1

你把两个路由都命名为“user_page”,所以我猜第一个(不需要参数的那个)在起作用,而当你尝试用参数构建网址时就出错了。把这两个函数的名字改得不一样,这样应该就能解决问题了。

撰写回答