gpt4 book ai didi

python - 无法从 models.py 导入类

转载 作者:行者123 更新时间:2023-11-30 22:54:17 26 4
gpt4 key购买 nike

所以我只是将我的小应用程序迁移到定义了两个蓝图的蓝图。

我收到此错误:ImportError:无法导入名称用户

我不知道这里出了什么问题。我相对有信心不存在循环导入,或者是否存在确切的用途。总的来说,我对 Python 和编程都很陌生。

此外,如果我将 core.py 导入行更改为: from users.models import * 它会一直工作,直到我去加载网页,然后我会得到一个回溯,说“全局名称 User 不是”定义。 users\views.py 导入行也是如此。

我尝试导入它的唯一两个地方是这里;

核心.py:

from flask import Flask, g
from flask_sqlalchemy import SQLAlchemy
from flask.ext.login import LoginManager, current_user
from flask.ext.bcrypt import Bcrypt
from assets.forms import SearchAssetTag

app = Flask(__name__)
app.config.from_object('config')
login_manager = LoginManager()
login_manager.init_app(app)

bcrypt = Bcrypt(app)
db = SQLAlchemy(app)

from users.models import User

@login_manager.user_loader
def load_user(user_id):
return User.query.filter(User.id == int(user_id)).first()

#Define headersearchform globally as it runs on every page with header.
@app.before_request
def before_request():
g.headersearchform = SearchAssetTag()
g.current_user = current_user

from users.views import users_blueprint
from assets.views import assets_blueprint

app.register_blueprint(users_blueprint)
app.register_blueprint(assets_blueprint)

/users/views.py 中,我显然必须引用 User 对象进行登录等;

from flask import render_template, request, session, url_for, redirect, flash, Blueprint
from core import app, db
from sqlalchemy.exc import IntegrityError
from forms import SignupForm, LoginForm
from models import User
from flask.ext.login import login_user, login_required, current_user, logout_user

users_blueprint = Blueprint('users', __name__, template_folder = 'templates')

文件夹结构如下所示;

core.py
__init__.py
config.py

\users
__init__.py
views.py
forms.py
models.py
\templates
template.html
\assets
__init__.py
views.py
forms.py
models.py
\templates
template.html

最后这是 model.py 文件,其中为 SQLAlchemy 定义了 User 类:

from core import db, bcrypt

class User(db.Model):

__tablename__ = "users"

id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String, nullable=False)
last_name = db.Column(db.String, nullable=False)
email = db.Column(db.String, nullable=False)
title = db.Column(db.String, nullable=False)
password = db.Column(db.String)

def __init__(self, first_name, last_name, email, title, password):
self.first_name = first_name
self.last_name = last_name
self.email = email
self.title = title
self.password = bcrypt.generate_password_hash(password)

最佳答案

您有一个circular import :

models.py 正在从 core 导入 db,而 core.py 正在从 models 导入 User

您应该移动此行:

from users.models import User

core.py的底部。这样,当 models.py 尝试从 core 导入 db 时,它将被定义(因为它已经过去了)

关于python - 无法从 models.py 导入类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37871945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com