【问题标题】:Circular import when using flask-mail in flask-restful project在烧瓶休息项目中使用烧瓶邮件时的循环导入
【发布时间】:2022-01-01 07:23:36
【问题描述】:

我正在开发一个 Flask 项目,其中包括发送确认电子邮件链接。但是,使用flask-restful,会出现循环导入模块的问题。 在我的app.py 文件中,我已经导入了模块并使用了api.add_resource

# app.py file
from flask_restful import Api
from flask import Flask
from account import Register
from flask_mail import Mail

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = ''
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config.from_pyfile('core/config.py')

mail = Mail(app)
api = Api(app)

api.add_resource(Register, '/register')

if __name__ == '__main__':
    app.run(debug=True)

在我的account.py 文件中,我需要为每个这样的 POST 请求发送一封电子邮件

from app import mail
class Register(Resource):
    # init some msg and configuration
    mail.send(msg)

现在这是一个循环导入,因为 app.py import account.pyaccount.py import app.py 使用 mail。任何人都可以在不放弃使用flask-restful 模块的情况下解决这个问题吗?

【问题讨论】:

    标签: python flask flask-restful flask-mail


    【解决方案1】:

    最简单直接的答案是:导入模块,而不是模块中的符号。

    所以,不是from account import Register,而是import account,然后是api.add_resource(account.Register, '/register')

    account.py 的类似方法也应该有效:

    import app
    
    
    class Register(Resource):
        app.mail.send(msg)
    

    一些基本的解释可以在https://github.com/Khan/style-guides/blob/master/style/python.md#imports找到

    【讨论】:

    • 我通过将它们添加到__init.py__ 并导入到main.py 文件来初始化解决了这个问题。不管怎样,谢谢你的帮助
    猜你喜欢
    • 2020-05-25
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    相关资源
    最近更新 更多