我正在尝试使用以下重定向将变量su
传递到另一个路由。
return redirect(url_for('showspace', spacename=user.username, su='Welcome back'))
路线如下:
@app.route('/space/<spacename>', methods=['GET', 'POST'])
@login_required
def showspace(spacename, su = None):
if su != None:
print(su)
如果在没有su
参数的情况下调用路线,我希望su
为None
。但是,如果将su
传递给showspaces
,我希望打印su
的内容。这样做会引发以下错误:
TypeError: showspace() missing 1 required positional argument: 'su'
感谢您的帮助。
答案 0 :(得分:0)
对于视图函数中的每个参数,您也可以创建一个url变量。
因此您可能需要将您的网址更改为以下内容:
@app.route('/space/<spacename>/<su>', methods=['GET', 'POST'])
然后你需要将默认值设为Null,你可以这样做:
def showspace(spacename, su = None)
而这第二部分,你已经想到了自己。所以只需调整网址装饰将解决问题。
请记住,使用url(GET)
获得的值不一定是您从url_for
函数发送的值,因为用户可以轻松更改这些值。
如果是这个方法的用户,你必须像下面这样调用你的视图:
<domain>/space/<spacename>/
注意尾随斜线。因此,如果您希望能够在没有尾部斜杠的情况下调用它,则有两个选项:
su
POST
要添加新的网址规则,您可以像这样定义它们:
@app.route('/space/<spacename>/<su>/', methods=['GET', 'POST']
@app.route('/space/<spacename>/', methods=['GET', 'POST'])
def showspace(spacename, su = None):
pass