账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    flask app.register_blueprint报错
    33
    0

    按照《FlaskWeb开发:基于Python的Web应用开发实战》开始学习的,之前运行没问题,最近修改了下modle模型和数据库,后来服务器就跑不起来了。 好像是register_blueprint报错,实在不明白有什么关系,代码检查了也看不出问题。

    **Traceback (most recent call last):
      File "manage.py", line 8, in <module>
        app = create_app(os.getenv('FLASK_CONFIG') or 'default')
      File "/home/pi/Documents/myflasky/app/__init__.py", line 37, in create_app
        app.register_blueprint(main_blueprint)
      File "/home/pi/.local/lib/python2.7/site-packages/flask/app.py", line 64, in wrapper_func
        return f(self, *args, **kwargs)
      File "/home/pi/.local/lib/python2.7/site-packages/flask/app.py", line 951, in register_blueprint
        blueprint.register(self, options, first_registration)
      File "/home/pi/.local/lib/python2.7/site-packages/flask/blueprints.py", line 154, in register
        deferred(state)
      File "/home/pi/.local/lib/python2.7/site-packages/flask/blueprints.py", line 173, in <lambda>
        s.add_url_rule(rule, endpoint, view_func, **options))
      File "/home/pi/.local/lib/python2.7/site-packages/flask/blueprints.py", line 76, in add_url_rule
        view_func, defaults=defaults, **options)
      File "/home/pi/.local/lib/python2.7/site-packages/flask/app.py", line 64, in wrapper_func
        return f(self, *args, **kwargs)
      File "/home/pi/.local/lib/python2.7/site-packages/flask/app.py", line 1046, in add_url_rule
        self.url_map.add(rule)
      File "/home/pi/.local/lib/python2.7/site-packages/werkzeug/routing.py", line 1215, in add
        rule.bind(self)
      File "/home/pi/.local/lib/python2.7/site-packages/werkzeug/routing.py", line 687, in bind
        self.compile()
      File "/home/pi/.local/lib/python2.7/site-packages/werkzeug/routing.py", line 740, in compile
        _build_regex(self.is_leaf and self.rule or self.rule.rstrip('/'))
      File "/home/pi/.local/lib/python2.7/site-packages/werkzeug/routing.py", line 729, in _build_regex
        variable, converter, c_args, c_kwargs)
      File "/home/pi/.local/lib/python2.7/site-packages/werkzeug/routing.py", line 695, in get_converter
        raise LookupError('the converter %r does not exist' % converter_name)
    LookupError: the converter 'init' does not exist**
    
    

    源码:
    app/__init__.py

    23 def create_app(config_name):
     24     app = Flask(__name__)
     25     app.config.from_object(config[config_name])
     26     config[config_name].init_app(app)
     27 
     28     bootstrap.init_app(app)
     29     mail.init_app(app)
     30     moment.init_app(app)
     31     db.init_app(app)
     32     login_manager.init_app(app)
     33     pagedown.init_app(app)
     34 
     35     # 附加路由和自定义错误界面
     36     from .main import main as main_blueprint       
     37     app.register_blueprint(main_blueprint) #注释了就不报错,但是只能404
     38 
     39     from .auth import auth as auth_blueprint
     40     app.register_blueprint(auth_blueprint, url_prefix='/auth')
     41 
     42     return app
    

    app/main/__init__.py

     1 # -*- coding:utf-8 -*-
      2 from flask import Blueprint #创建蓝本,功能和路由一样
      3 main = Blueprint('main', __name__)  # 实例化蓝本
      4 
      5 from . import views,errors # 一定要在末尾导入,避免循环导入以来
      6 from ..models import Permission
      7 
      8 @main.app_context_processor
      9 def inject_permissions():
     10     return dict(Permission=Permission)
    
    
    
    
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 暗夜小仓鼠 普通会员 1楼

      flask app.register_blueprint 报错可能有以下几种情况:

      1. blueprint_name 未在 app.register_blueprint 中设置,需要在 app注册蓝图 的函数中使用。

      python @app.route('/') def index(): blueprint_name = 'myblueprint' register_blueprint(blueprint_name) return render_template('index.html')

      1. blueprint_name 未定义,需要在 blueprint_name 的值中包含下划线(_)。

      python @app.route('/') def index(): blueprint_name = 'myblueprint' register_blueprint(blueprint_name) return render_template('index.html')

      1. 你可能没有正确地使用 blueprint_name。确保在 blueprint_name 的值中包含了下划线(_)。

      python @app.route('/') def index(): blueprint_name = 'myblueprint' register_blueprint(blueprint_name) return render_template('index.html')

      1. 你可能没有正确地在模板文件中引用 blueprint_name。确保在模板文件中正确地引用 blueprint_name

      python {% if blueprint_name %} <div class="blueprint"> <!-- Your blueprint content here --> </div> {% endif %}

      1. 你可能没有正确地在 app.register_blueprint 中指定 blueprint_name。确保在 app.register_blueprint 中指定正确的 blueprint_name

      python @app.route('/') def index(): register_blueprint('myblueprint') return render_template('index.html')

      1. 你可能没有正确地在 app.register_blueprint 中指定 blueprint。确保在 app.register_blueprint 中指定正确的 blueprint

      python @app.route('/') def index(): register_blueprint('myblueprint') return render_template('index.html')

      如果你仍然无法解决问题,你可以尝试在不同的浏览器和操作系统上运行你的应用,看看是否也出现同样的错误。这可以帮助你确定问题是否与你的环境有关。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部