设置 Flask 应用工厂后出现 ImportError

问题描述 投票:0回答:1

我正在用 Flask 制作一个基本的博客网站。我尝试坚持官方文档中提到的最佳推荐实践。我想了解为什么在添加应用程序工厂并在模块和应用程序结构中进行后续更改后,我收到 ImportError: Cannot import name 'app' from 'app'

应用结构:

project:.
|   .env
|   .gitignore
|   config.py
|   requirements.txt
|   server.py           
+---app
|   |   forms.py
|   |   routes.py
|   |   __init__.py
|   |   
|   +---static
|   |   +---images
|   |   |       ...
|   |   |       
|   |   +---js
|   |   |       index.js
|   |   |       
|   |   \---styles
|   |           ...
|   |           
|   +---templates
|   |   |   ...
|   |   |   
|   |   \---macros
|   |           ...

这是代码:

__init__.py

from flask import Flask


def init_app():
    """Initialize the core app"""
    app = Flask(__name__, instance_relative_config=False)
    app.config.from_object("config.Config")

    with app.app_context():
        from . import routes
        return app

routes.py

from flask import render_template, flash, redirect, url_for
from app import app                     #I am getting ImportError here
from app.forms import ContactForm


@app.route("/")
def index():
    title = "Welcome to Project"
    return render_template("hero-page.html", title=title)


@app.route("/gallery/")
def gallery():
    return render_template("gallery.html")


@app.route("/about-us/")
def about_us():
    return render_template("about-us.html")

config.py

from os import environ, path
from dotenv import load_dotenv

basedir = path.abspath(path.dirname(__file__))
load_dotenv(path.join(basedir, ".env"))


class Config:
    """Set Flask environment variables"""

    ENVIRONMENT = environ.get("ENVIRONMENT")
    FLASK_APP = environ.get("FLASK_APP")
    FLASK_DEBUG = environ.get("FLASK_DEBUG")
    SECRET_KEY = environ.get("SECRET_KEY")

我应该添加/修改什么来解决这个错误?

python flask routes factory
1个回答
0
投票

app目录下好像没有app.py

你应该创建一个app.py文件

© www.soinside.com 2019 - 2024. All rights reserved.