1. 我正在尝试构建一个 Flask 项目,并尝试将类导入 models.py,并将路由导入 app.py。当我尝试运行项目时,它显示了一些错误信息。以下是 traceback 的信息:
Traceback (most recent call last):
File "/Users/cheliang/Desktop/project/env/lib/python3.8/site-packages/flask/cli.py", line 240, in locate_app
__import__(module_name)
File "/Users/cheliang/Desktop/project/app.py", line 4, in <module>
from user import routes
File "/Users/cheliang/Desktop/project/user/routes.py", line 1, in <module>
from user.models import User
ImportError: cannot import name 'User' from 'user.models' (/Users/cheliang/Desktop/project/user/models.py)
我的项目的树形结构:
├── app.py
├── env
── run
├── static
│ ├── css
│ │ ├── normalize.css
│ │ └── styles.css
│ └── js
│ ├── jquery.js
│ └── scripts.js
├── templates
│ ├── base.html
│ ├── dashboard.html
│ └── home.html
└── user
├── __init__.py
├── __pycache__
│ ├── __init__.cpython-38.pyc
│ ├── models.cpython-38.pyc
│ └── routes.cpython-38.pyc
├── models.py
└── routes.py
2.下面是代码细节: models.py:
from flask import Flask, jsonify
class User:
def signup(self):
user = {
"_id":"",
"name":"",
"email":"",
"password":""
}
return jsonify(user),200
这是routes.py文件:
from user.models import User
from flask import Flask
from app import app
@app.route('/user',methods=["GET"])
def signup(self):
return User().signup()
这是 app.py 的代码:
from flask import Flask ,render_template
app = Flask(__name__)
from user import routes
@app.route('/')
def home():
return render_template('home.html')
@app.route('/dashboard')
def dashboard():
return render_template('dashboard.html')
app.py
文件中的__init__.py
导入应用程序?我的意思是在routes.py
中你也这样做,但这不是有点双向吗?作为入口点,你从较低级别导入app
,而在routes.py
的情况下,你从相同的地方导入它。按照更具层次结构的方法,在app.py
文件中初始化Flask应用程序不是更有意义吗? - Ndrslmpk__init__.py
中初始化应用程序。app
是我在__init__.py
中创建的flask对象。要使用它,我必须显式地将其导入其他模块,就像你在routes.py
中正确地注意到的那样。 - Gitau Harrisonapp.py
的唯一目的是作为应用程序的入口点。您可以将整个应用程序捆绑在顶级文件app.py
中,因此摆脱了使用模块的概念,这仍然可以,但是如果您打算创建一个更大的应用程序,分离它们会更容易。 - Gitau Harrison