python - 在 Python 上使用 app.route 进行循环

标签 python

由于循环,我正在尝试在我的服务器上创建多个 URL。问题是我在 app.route 中创建的每个函数不能与其他函数具有相同的名称。而且我不知道如何创建不同的函数名称...... 这是代码:

json_tweets = []

for line in open('C:\Users\Benjamin\Desktop\DashboardProject\last_rated_set.json',"r"):
    json_tweets.append(json.loads(line,"ISO-8859-1"))

cashtag_tab = []  

for tweet in json_tweets:
    if not(tweet['cashtag'] in cashtag_tab) :
        cashtag_tab.append(tweet['cashtag'])        

for i in range(0,(len(cashtag_tab)-1)) :
    var=cashtag_tab[i]
    @app.route("/"+var)
    def company(var) :
        finance=Share(var)
        datas =  finance.get_historical('2014-01-01', '2014-12-31')
        datas = json.dumps(datas, default=json_util.default)    
        return datas

我收到错误 AssertionError: View 函数映射正在覆盖现有端点函数:公司

最佳答案

这会失败,因为 Flask 默认从函数中派生端点名称,但无论如何它稍后都会失败,因为函数 company 需要参数 var 而路由不是参数化。最简单的选择就是检查处理程序内的值:

@api.route('/<var>')
def company(var):
    if var not in cashtag_tab:
        abort(404)

如果您出于任何原因希望所有路由都位于路由映射中,我曾经需要类似的东西并想出了这样的东西:

def url_family(source, methods=('GET',)):
    def decorator(f):
        for entry in source:
            # create a handler that delegates to your function
            def view_func(entry=entry, **kwargs):
                return f(entry, **kwargs)

            endpoint = '{0}_{1}'.format(f.__name__, entry)
            url = '/{0}'.format(entry)

            api.add_url_rule(url, 
                             methods=methods,
                             endpoint=endpoint,
                             view_func=view_func)

    return decorator

然后将处理程序注册为:

@url_family(cashtag_tab)
def company(var):
    ...

关于python - 在 Python 上使用 app.route 进行循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31533577/

相关文章:

python paramiko与文件输入连接

python - 在 Pandas 中,如何按键中的每 N 行进行分组,保存一列的最后一个值并根据 'set' 中的所有行计算另一列?

python - 有没有办法通过已知的inode打开文件

python - Elastic Beanstalk 最大环境变量长度

Python 列表排序

Python 模块导入问题

python - 哪个语法规则匹配 def foo(a, *, b=10) 复合语句?

python - 我们是否将空间滤波或频率滤波用于模糊,边缘检测?

python - pyqtgraph:如何拖放到plotItems中

python - 在python中查找日期列表之间的差异