AttributeError:“module”对象没有“decrypt_pwd”属性

2024-04-23 17:21:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一些关于这个错误的帮助,我已经在我的store_User_db.py文件中创建了一个类User,它基本上使用Fernet加密库将加密密码存储在db中。 存储密码后,我需要一个解密密码的函数,因此我在用户类中创建了一个def decrypt_pwd函数,如下所示,问题是,在使用用户类导入store_User_db后,尝试从py other form.py文件调用此函数时,它返回错误:“module”对象没有属性“decrypt_pwd”

我错过什么了吗?如果可以,请以正确的方式编辑我的代码

#store_user_db.py
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///data-users2.sqlite"
db = SQLAlchemy(app)


class User(db.Model):
    __tablename__ = "user"
    id = db.Column(db.Integer(), primary_key=True, autoincrement=True)
    username = db.Column(db.String(64), unique=True)
    pwd = db.Column(db.LargeBinary(), unique=True)

    def __init__(self, id, username, pwd):
        key = Fernet.generate_key()
        f = Fernet(key)
        token = f.encrypt(pwd)
        self.id = id
        self.username = username
        self.pwd = f.encrypt(pwd)

        def decrypt_pwd(self):
            p = db.session.query(User).filter_by(username="ita_itf").first()
            DESTINATION_PSW = f.decrypt(p.pwd)
            return DESTINATION_PSW

这里我调用函数:

        #form.py
        from store_user_db import User, db 
        import store_user_db
        
        DICP_FTP_DESTINATION_PSW = store_user_db.decrypt_pwd()

错误:

AttributeError: 'module' object has no attribute 'decrypt_pwd'

Tags: storekeypyselfidtrue密码db
1条回答
网友
1楼 · 发布于 2024-04-23 17:21:05

请尝试以下代码:

#store_user_db.py
class User(db.Model):
    __tablename__ = "user"
    id = db.Column(db.Integer(), primary_key=True, autoincrement=True)
    username = db.Column(db.String(64), unique=True)
    pwd = db.Column(db.LargeBinary(), unique=True)

    def __init__(self, username, pwd):
        self.username = username
        self.pwd = f.encrypt(pwd)

    
def decrypt_pwd():
    key = Fernet.generate_key()
    f = Fernet(key)
    token = f.encrypt(pwd)
    p = db.session.query(User).filter_by(username="ita_itf").first()
                DESTINATION_PSW = f.decrypt(p.pwd)
                return DESTINATION_PSW

#form.py
from store_user_db import decrypt_pwd
DICP_FTP_DESTINATION_PSW = decrypt_pwd()

相关问题 更多 >