在Flask中,url_for生成器不能为我的某个视图(其他视图可以正常工作)工作。生成器提供了/user/?name=Joe
,但我预期的是/u/Joe
。
在模板中,我尝试使用以下方式获取用户页面的URL:{{ url_for('user', name = g.user.name ) }}
下面是对应的视图函数:
@app.route('/u/<name>')
@login_required
def user(name):
起初这个功能是可行的,但后来发生了什么变化。我尝试更改视图名称和url,但没有成功。
你有什么想法吗?对于这个问题我束手无策...
完整的应用程序可以在GitHub上找到:https://github.com/joehand/weight-and-more-tracker 另外,移除
<name>
变量并不能解决问题。URL将只是/user
。
编辑:被装饰为@login_required
的函数是Flask-login提供的。
__name__
注册路由。但是,如果提供了两个具有相同名称的条目,则最后提供的条目将获胜。Flask-MongoRest使用add_url_rule
向Flask注册自己,并使用name
关键字参数告诉Flask要在其下注册什么。因此,user
函数被user
MongoRest类覆盖。 - Sean Vieira