Не взлетает тест приложения на Flask - Python
Формулировка задачи:
Приветствую, коллеги!
Пытаюсь освоить Flask по вот этой мурзилке (M.Grinberg). Создал приложение в hello.py, дошло дело до структурированного приложения и blueprint-ов (Глава 7). И вот тут забуксовал. Вроде все сделал как в примерах, а при запуске $ python manage.py test выдает ошибку:
Файлы:
1. config.py
2. manage.py
3. app/__init__.py
Может кто-нить помочь объяснить логику запуска этого самого макета блюпринта? И почему он ругается на отсутствующее имя main - вообще непонятно.
Листинг программы
- (venv) mdadm@St52 ~/second-flask-mdadm $ python manage.py test
- Traceback (most recent call last):
- File "manage.py", line 3, in <module>
- from app import create_app, db
- File "/home/mdadm/second-flask-mdadm/app/__init__.py", line 7, in <module>
- from main import main as main_blueprint
- ImportError: No module named 'main'
- (venv) mdadm@St52 ~/second-flask-mdadm $
Листинг программы
- import os
- basedir = os.path.abspath(os.path.dirname(__file__))
- class Config:
- SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard_to_guess_string'
- SQLALCHEMY_COMMIT_ON_TEARDOWN = True
- FLASKY_MAIL_SUBJECT_PREFIX = '[Flasky]'
- FLASKY_MAIL_SENDER = 'Flasky Admin <flasky@example.com>'
- FLASKY_ADMIN = os.environ.get('FLASKY_ADMIN')
- @staticmethod
- def init_app(app):
- pass
- class DevelopmentConfig(Config):
- DEBUG = True
- MAIL_SERVER = 'smtp.googlemail.com'
- MAIL_PORT = 587
- MAIL_USE_TLS = True
- MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
- MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
- SQLALCHEMY_DATABASE_URI = os.environ.get('DEV_DATABASE_URL') or \
- 'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')
- class TestingConfig(Config):
- TESTING = True
- SQLALCHEMY_DATABASE_URI = os.environ.get('TEST_DATABASE_URL') or \
- 'sqlite:///' + os.path.join(basedir, 'data-test.sqlite')
- class ProductionConfig(Config):
- SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
- 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
- config = {
- 'development': DevelopmentConfig,
- 'testing': TestingConfig,
- 'production': ProductionConfig,
- 'default': DevelopmentConfig
- }
Листинг программы
- #!/usr/bin/env python
- import os
- from app import create_app, db
- from app.models import User, Role
- from flask_script import Manager, Shell
- from flask_migrate import Migrate, MigrateCommand
- app = create_app(os.getenv('FLASK_CONFIG') or 'default')
- manager = Manager(app)
- migrate = Migrate(app, db)
- def make_shell_context():
- return dict(app=app, db=db, User=User, Role=Role)
- manager.add_command("shell", Shell(make_context=make_shell_context))
- manager.add_command('db', MigrateCommand)
- @manager.command
- def test():
- """Run the unit tests"""
- import unittest
- tests = unittest.TestLoader().discover('tests')
- unittest.TextTestRunner(verbosity=2).run(tests)
- if __name__ == '__main__':
- manager.run()
Листинг программы
- from flask import Flask, render_template
- from flask_bootstrap import Bootstrap
- from flask_mail import Mail
- from flask_moment import Moment
- from flask_sqlalchemy import SQLAlchemy
- from config import config
- bootstrap = Bootstrap()
- mail = Mail()
- moment = Moment()
- db = SQLAlchemy()
- def create_app(config_name):
- app = Flask(__name__)
- app.config.from_object(config[config_name])
- config[config_name].init_app(app)
- bootstrap.init_app(app)
- mail.init_app(app)
- moment.init_app(app)
- db.init_app(app)
- # attach routes and custom error pages here
- from main import main as main_blueprint
- app.register_blueprint(main_blueprint)
- return app
Решение задачи: «Не взлетает тест приложения на Flask»
textual
Листинг программы
- from .main import main as main_blueprint
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д