我看过帮助指南等,但是我似乎仍然无法使Flask Blueprints有效。
这是我的结构
root /
config.py
|app/
| __init__.py
| user_auth/
| __init__.py
| app.py
| routes.py
在app / init .py文件中,该文件如下
from flask import Flask
from config import Config
app = Flask(__name__)
app.config.from_object(Config)
from .user_auth.routes import user_auth
app.register_blueprint(user_auth, url_prefix="")
来自user_auth init 。.py文件为
from flask import Flask
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_login import LoginManager
app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)
login = LoginManager(app)
login.login_view = 'login'
app.config['SECRET_KEY'] = 'trial'
from user_auth import routes, models
这是user_auth / routes.py文件
from user_auth import app, db
from flask_login import login_required
from user_auth.forms import RegistrationForm, LoginForm
from flask import request, render_template, flash, redirect, url_for, Blueprint
from werkzeug.urls import url_parse
from flask_login import logout_user
from flask_login import current_user, login_user
from user_auth.models import User
from flask import Blueprint
user_auth = Blueprint('user_auth', __name__)
@app.route('/')
@app.route('/index')
def index():
return render_template('index.html', title='Welcome')
@app.route('/register', methods=["POST", "GET"])
def register():
... (Other paths)
我正在运行Windows,并使用了以下命令
set FLASK_APP=app
然后我使用
flask run
当我尝试运行时,它显示以下内容:
Error: While importing "app", an ImportError was raised:
Traceback (most recent call last):
File "...\python38-32\lib\site-packages\flask\cli.py", line 240, in locate_app
__import__(module_name)
File "...\root\app\__init__.py", line 8, in <module>
from .user_auth.routes import user_auth
File "...\root\app\user_auth\__init__.py", line 16, in <module>
from user_auth import routes, models
ModuleNotFoundError: No module named 'user_auth'
预先感谢您的帮助。
答案 0 :(得分:0)
对于End If
中所有您提到的文件,例如app/user_auth/
和init.py
,您都可以通过以下方式访问该包:
routes.py
from root.app.user_auth
然后,我建议不要使用超过1种想法的同一个名称,这里from ..user_auth
既是程序包名称,又是您的蓝图的变量名称
更改方式
user_auth