Circular import in Flask using Blueprint

47 Views Asked by At

Want to make redirection of endpoints to differets controllers via blueprint, but it makes error circular import. Can't understand where is cyclicality.

Traceback (most recent call last): File "C:\Users\stein\PycharmProjects\techTasks\filmorate_init_.py", line 2, in from app import routes File "C:\Users\stein\PycharmProjects\techTasks\filmorate\app\routes.py", line 2, in from filmorate.app.view.FilmController import FilmController File "C:\Users\stein\PycharmProjects\techTasks\filmorate_init_.py", line 9, in app.register_blueprint(routes.app_blueprint_film) ^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: partially initialized module 'app.routes' has no attribute 'app_blueprint_film' (most likely due to a circular import)

code:

**__init__.py**

from flask import Flask
from app import routes


app = Flask(__name__)
app.json.ensure_ascii = False
app.register_blueprint(routes.app_blueprint_film)
app.register_blueprint(routes.app_blueprint_user)


if __name__ == '__main__':
    app.run(host='localhost', port=8080)



**app.routes.py**

from flask import Blueprint
from filmorate.app.view.FilmController import FilmController
from filmorate.app.view.UserController import UserController


app_blueprint_film = Blueprint('films', __name__)
FilmController.register(app_blueprint_film)

app_blueprint_user = Blueprint('users', __name__)
UserController.register(app_blueprint_user)

**app.view.FilmController.py**

from flask import request
from filmorate.model.Film import Film
from flask_classy import FlaskView, route
from filmorate.app.service.FilmService import FilmService


class FilmController(FlaskView):
    pass
0

There are 0 best solutions below