Flask:动态创建路线

时间:2019-08-14 10:14:26

标签: python flask

我正在创建一个显示有关项目信息的网页,并尝试实现以下结构

 - /ITEMS
 |           + /ITEMS/ITEM_1
 |           + /ITEMS/ITEM_2
 ...

路线/ITEM_LIST包含所有项目的概述,每个/ITEMS/ITEM_X包含有关给定项目的特定信息。

由于我的商品列表不是不是静态商品,所以我想动态创建ITEMS/ITEM_X页面。为此,我有一个功能

def html_table_0(table: str, title: str = 'na'):
    return render_template('table_template.html',
                           tables=[table],
                           titles=['na', title])

当我有一个特定的项目时,这很好用:

obj_name = obj.name  # (obj is an instance of custom class Obj representing my items)
@app.route('/objects/' + obj_name, methods=("POST", "GET"))
def html_table():
    return render_template('table_template.html',
                           tables=[obj.to_html()],
                           titles=['na', obj.title])

但是在尝试重复执行此操作时会失败。

我试图利用此SO post

counter, routes = 0, [None]*obj_array.__len__()
for obj in obj_array:
    routes[counter] = dict(route='/odds/'+obj.name,
                           func=lambda: html_table(table=obj.to_html()),
                           page=obj.name)

但这会引发异常

  

AssertionError:视图函数映射正在覆盖现有的端点函数:obj.name

任何指导将不胜感激。

0 个答案:

没有答案