lask.cli.NoAppException:导入“app”时,引发了 ImportError:

Jay*_*ark 5 python flask

1.我正在尝试构建一个flask项目并尝试将类导入到models.py中并将路由导入到app.py中。当我尝试运行该项目时,它显示了一些错误。这是回溯的信息:

\n
Traceback (most recent call last):\n  File "/Users/cheliang/Desktop/project/env/lib/python3.8/site-packages/flask/cli.py", line 240, in locate_app\n    __import__(module_name)\n  File "/Users/cheliang/Desktop/project/app.py", line 4, in <module>\n    from user import routes\n  File "/Users/cheliang/Desktop/project/user/routes.py", line 1, in <module>\n    from user.models import User\nImportError: cannot import name 'User' from 'user.models' (/Users/cheliang/Desktop/project/user/models.py)\n
Run Code Online (Sandbox Code Playgroud)\n

我的项目的树结构:

\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 env\n\xe2\x94\x80\xe2\x94\x80 run\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 static\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 css\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 normalize.css\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 styles.css\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 js\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 jquery.js\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 scripts.js\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 templates\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 base.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dashboard.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 home.html\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 user\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __pycache__\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.cpython-38.pyc\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 models.cpython-38.pyc\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 routes.cpython-38.pyc\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 models.py\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 routes.py\n
Run Code Online (Sandbox Code Playgroud)\n

2.以下是代码详细信息:\n models.py:

\n
from flask import Flask, jsonify\nclass User:\n    def signup(self):\n\n        user = {\n         "_id":"",\n\n         "name":"",\n         "email":"",\n         "password":""\n\n        }\n        return jsonify(user),200\n
Run Code Online (Sandbox Code Playgroud)\n

这是routes.py:

\n
from user.models import User\nfrom flask import Flask\nfrom app import app \n\n@app.route('/user',methods=["GET"])\ndef signup(self):\n    return User().signup()\n
Run Code Online (Sandbox Code Playgroud)\n

这是app.py的代码

\n
from flask import Flask ,render_template\n\napp = Flask(__name__)\nfrom user import routes\n\n@app.route('/')\ndef home():\n    return render_template('home.html')\n\n@app.route('/dashboard')\ndef dashboard():\n    return render_template('dashboard.html')\n
Run Code Online (Sandbox Code Playgroud)\n

Git*_*son 9

对于极简烧瓶应用程序,请考虑这种结构:

project_folder
    |---------- app.py
    |---------- config.py
    |---------- .env
    |---------- requirements.txt
    |---------- .flaskenv
    |---------- app/
                  |------ routes.py
                  |------ models.py
                  |------ __init__.py
                  |------ forms.py
                  |------ templates/
                              |-------- home.html
                              |-------- base.html
                              |-------- dashbooard.html
                  |------ static/
                            |-------css/
                                     |------- styles.css
                                     |------- normalize.css
                            |-------js/
                                     |------- jquery.js
                                     |------- scripts.js
Run Code Online (Sandbox Code Playgroud)

创建应用程序实例:

# __init__.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
db = SQLAlchemy(app)

from app import routes, models
Run Code Online (Sandbox Code Playgroud)

使用烧瓶模型:

# models.py

from app import db

class User(object):
    username = db.Column(db.String())
    # ...
Run Code Online (Sandbox Code Playgroud)
# routes.py

from flask import render_template
from app import app 
from app.models import User
from app.forms import <your-form>

@app.route('/')
def home():
    return render_template('home.html')

@app.route('/dashboard')
def dashboard():
    return render_template('dashboard.html')

@app.route('/user',methods=["GET"])
def signup():
    # ...
    user = User.query.filter_by(username=form.username.data)
Run Code Online (Sandbox Code Playgroud)

最后,在以下位置创建 Flask 应用程序的入口点app.py

from app import app
Run Code Online (Sandbox Code Playgroud)