【问题标题】:AssertionError: View function mapping is overwriting an existing endpoint functionAssertionError:视图函数映射正在覆盖现有端点函数
【发布时间】:2015-05-03 09:36:15
【问题描述】:

我不知道如何解决我在使用 Flask 时从我的 Python 代码中得到的这个问题:

@app.route('/addEvent/', methods=['POST'])
def addEvent():

@app.route('/deleteEvent/', methods=['POST'])
def addEvent():

错误信息:

AssertionError: View function mapping is overwriting an existing endpoint function: addEvent
21:50:57 web.1  | Traceback (most recent call last):

我试着理解这个页面:http://flask.pocoo.org/docs/0.10/patterns/viewdecorators/

还有这个帖子AssertionError: View function mapping is overwriting an existing endpoint function: main

但我不明白。有人可以告诉我如何为我的代码解决这个问题吗?

【问题讨论】:

    标签: python python-2.7 flask


    【解决方案1】:

    重命名第二个函数;它也被称为addEvent;我建议改为deleteEvent:

    @app.route('/deleteEvent/', methods=['POST'])
    def deleteEvent():
    

    endpoint 名称通常取自您用@app.route() 装饰的函数;您还可以通过告诉装饰器您要使用什么名称来显式地为您的端点指定一个不同的名称:

    @app.route('/deleteEvent/', methods=['POST'], endpoint='deleteEvent')
    def addEvent():
    

    这会让你坚持使用相同的函数名称。在这种特定情况下,这不是一个好主意,因为一个函数替换了另一个函数,而对第一个函数的唯一引用是在 Flask URL 映射中。

    另见Flask.route() documentation:

    endpoint – 已注册 URL 规则的端点。 Flask 本身将视图函数的名称假定为端点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-19
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      • 2019-11-14
      • 2013-11-26
      • 2015-11-01
      相关资源
      最近更新 更多