按照《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)
尝试了下,然而并看不出来什么原因,也没办法在本地复现出来。
所以方便的话贴个你源码的git地址或者打个压缩包吧。。