117 votes

AssertionError : Le mappage de la fonction de visualisation écrase une fonction de point de terminaison existante : main

Quelqu'un sait-il pourquoi je ne peux pas écraser une fonction de point de terminaison existante si j'ai deux règles url comme ceci

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 :

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

0voto

Joshua Johns Points 83

Utiliser flask 0.9 à la place utilisez les commandes suivantes sudo pip uninstall flask

sudo pip install flask==0.9

0voto

imok1948 Points 21

Si vous utilisez flask sur un ordinateur portable python, vous devez redémarrer le noyau à chaque fois que vous apportez des modifications au code.

0voto

popandpeek Points 1

Dans mon cas, le problème provenait d'une mise à jour (cassante) de l'application flask-jwt-extended (version 4.x.x et supérieure) utilisé dans une api de base que j'ai écrite il y a un an et que j'intègre maintenant dans un projet.

@jwt_required à @jwt_required()

0voto

wangyongheng Points 1

Peut-être que quelque chose ne contient aucune différence

  1. vérifier l'url
  2. nom de la fonction de contrôle

0voto

Kubinha Points 1

Je travaille sur un problème similaire et j'ai réussi à m'en débarrasser en renvoyant la fonction wrapper, ce qui n'était pas fait auparavant :

def decorator_func(func_to_decorate):
    def wrapper_func():
        return func_to_decorate
    return wrapper_func     # I wasn't returning wrapper func!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X