可变路由不在For循环中工作

时间:2014-08-15 06:04:30

标签: python flask

我尝试使用数据库中的变量和for循环一次创建多个路径。

我试过这个

temp = "example"
@app.route("/speaker/<temp>")
def getSpeakerAtr(temp):
    return  '''%s''' % temp

效果很好。但是:

for x in models.Speaker.objects:
        temp = str(x.name)
        @app.route("/speaker/<temp>")
        def getSpeakerAtr(temp):
            return  '''%s''' % temp

不起作用。错误消息:

File&#34; /Users/yang/Documents/CCPC-Website/venv/lib/python2.7/site-packages/flask/app.py" ;,第1013行,装饰者 02:03:04 web.1 | self.add_url_rule(规则,端点,f,**选项)

**我想使用多条路由的原因是我需要通过查询路由来获取对象的完整数据。例如: 如果我们输入这个网址:

//.../扬声器/ SAM

我们可以获得具有&#39;名称&#39;价值为&#39; sam&#39;。然后我可以使用此对象中的所有值,如bio或者其他东西。**

1 个答案:

答案 0 :(得分:1)

您不需要多条路线。只有一条路线可以验证其价值,例如:

@app.route('/speaker/<temp>')
def getSpeakerAtr(temp):
    if not any(temp == str(x.name) for x in models.Speaker.objects):
        # do something appropriate (404 or something?)
    # carry on doing something else

或者你的真实意图:

@app.route('/speaker/<name>')
def getSpeakerAtr(name):
    speaker = # do something with models.Speaker.objects to lookup `name`
    if not speaker: # or whatever check is suitable to determine name didn't exist
        # raise a 404, or whatever's suitable
    # we have a speaker object, so use as appropriate