zoukankan      html  css  js  c++  java
  • 【Flask】报错解决方法:AssertionError: View function mapping is overwriting an existing endpoint function: main.user

      

      运行Flask时出现了一个错误, AssertionError: View function mapping is overwriting an existing endpoint function: main.user

      直译就是视图方法中重写了一个存在的endpoint方法。那么问题来了,endpoint 是何方神圣?

      查看了下源码,它的本质其实是请求url的一个规则,用来标记请求之后由哪个方法去具体执行。

    @property
    def endpoint(self):
        """The endpoint that matched the request.  This in combination with
        :attr:`view_args` can be used to reconstruct the same or a
        modified URL.  If an exception happened when matching, this will
        be ``None``.
        """
        if self.url_rule is not None:
            return self.url_rule.endpoint
    

      

      Flask官方文档中的解释:

    endpoint(endpoint)
    
    A decorator to register a function as an endpoint. Example:
    
    @app.endpoint('example.endpoint')
    def example():
        return "example"
    
    Parameters:	endpoint – the name of the endpoint
    

      

      以及其他函数中的用法,例如:add_url_rule()

    add_url_rule(rule, endpoint=None,...)
    
    Parameters:	
    #...
    endpoint – the endpoint for the registered URL rule. Flask itself assumes the name of the view function as endpoint
    

      

          敲黑板划重点,Flask的默认endpoint其实就是视图模块中的各个具体方法名。

      弄明白了endpoint,重新review下代码,发现确实是定义了相同方法名。

    #...
    
    @main.route('/user/<name>')
    def user(name):
         return render_template('user_simple.html',name=name)
    
    #...
    
    @main.route('/user/<username>')
    def user(username):
        user = User.query.filter_by(username=username).first_or_404()
        return render_template('user.html',user=user)
    

      

      找到问题根因,解决方法就so easy了,重命名其中一个方法名即可,问题搞定✿✿ヽ(°▽°)ノ✿

    参考文档:http://flask.pocoo.org/docs/1.0/api/

  • 相关阅读:
    jarsigner 签名android apk
    弱网络环境下,网络性能优化
    android 中handler的用法分析 (二)
    Mac 上面使用SVN的攻略
    android studio 编译加速
    Https 公钥、私钥、证书
    android sudio 打包资料汇总
    android studio 中查找代码中的硬编码
    ./adb: cannot execute binary file:
    android OOM分析工具LeakCanary
  • 原文地址:https://www.cnblogs.com/lilip/p/10737597.html
Copyright © 2011-2022 走看看