Дополнительно
AssertionError: просмотр отображение функция перезаписи функция конечной точкой: главная
Кто-нибудь знает, почему я могу'т заменить существующую функцию конечной точки, если у меня есть два правила url, как это
app.add_url_rule('/',
view_func=Main.as_view('main'),
methods=["GET"])
app.add_url_rule('/<page>/',
view_func=Main.as_view('main'),
methods=["GET"])
Вывод:
Traceback (most recent call last):
File "demo.py", line 20, in <module> methods=["GET"])
File ".../python2.6/site-packages/flask/app.py",
line 62, in wrapper_func return f(self, *args, **kwargs)
File ".../python2.6/site-packages/flask/app.py",
line 984, in add_url_rule 'existing endpoint function: %s' % endpoint)
AssertionError: View function mapping is overwriting an existing endpoint
function: main
61
10
Такая же проблема случилось со мной, когда у меня было больше чем одна функция API в модуле и попытался обернуть каждую функцию с 2 декораторов:
У меня такое же исключение, потому что я пытался обернуть более чем одна функция с этими двумя декораторов:
В частности, это обусловлено тем, пытаются зарегистрировать несколько функций с именем фантик:
Изменение имени функции решено для меня (фантик.имя = кнопку func.имя):
Затем, украшать более одной конечной точки работали.
Ваши имена должны быть уникальными, даже если они указывают на один и тот же метод просмотра.
Для пользователей, которые используют @приложение.маршрут лучше использовать ключ-аргумент
конечная точка
, а затем чейнинга значение__имя__
Рой Bahumi заявил. Принимая его пример будет:Колбу необходимо связать один 'функция просмотра' с 'конечная'. Вы вызываете главное.as_view('главная')` два раза, что создает две различные функции (точно такие же функции, но разных в подписи память). Короткий рассказ, вы должны просто делать
Я просто хотел бы добавить к этому еще 'шаблон#39; тип решение.
только хочу добавить очень интересную статью "и прояснение декораторов" Я нашла недавно: https://sumit-ghosh.com/articles/demystifying-decorators-python/
Если вы считаете, что у вас есть уникальные имена конечной точки и все равно эта ошибка выдается тогда, вероятно, вы столкнулись с Вопрос. То же самое было в случае со мной.
Эта проблема с колбой 0.10 в случае, если у вас одинаковая версия, то сделать следующее, Чтобы избавиться от этого:
Есть исправление для выпуска фляга #570 ввели не так давно (фляжка 0.10), что вызывает это исключение будет поднят.
См https://github.com/mitsuhiko/flask/issues/796
Так что если вы идете в flask/app.py и закомментировать 4 строки..948 951, это может помочь, пока проблема не будет resovled полностью в новой редакции.
Разница в том, что перемены-это здесь: http://github.com/mitsuhiko/flask/commit/661ee54bc2bc1ea0763ac9c226f8e14bb0beb5b1
Ваши имена должны быть уникальными, даже если они указывают на один и тот же метод просмотра, или вы можете добавить из functools импорт обертывания и использовать @обертывания https://docs.python.org/2/library/functools.html
использовать вместо фляга 0.9 используйте следующие команды
судо пункт Удалить фляжка
Это может произойти также, когда у вас одинаковые имена функций на разных маршрутах.