Flask url_for如何生成动态的endpoint

先上错误示范

@app.route('', method=['GET'])
def user_info(user_name):
    pass

def sign_in(user):
    """
    some code
    """
    user_name = user
    return redirect(url_for(user_name))

注: user_name是一个变量

问题出现啦,当sign_in执行到redirect的时候,报错:werkzeug.routing.BuildError


后来发现原因在于,redirect函数接收的是一个endpoint,而一个endpoint需要通过修饰函数定位才能找到。并且修饰函数中的定位需要跟函数名一致。
说的有点麻烦,上正确的代码就看明白啦

正确示范

@app.route('//user_info', method=['GET'])
def user_info(user_name):
    pass

def sign_in(user):
    """
    some code
    """
    return redirect(url_for(user_info, user_name=user))

这样就对啦,url_for接受的第二个参数是endpoint函数的传入参数

你可能感兴趣的:(Python,Flask)