1.我正在尝试构建一个flask项目并尝试将类导入到models.py中并将路由导入到app.py中。当我尝试运行该项目时,它显示了一些错误。这是回溯的信息:
\nTraceback (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)\nRun 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\nRun Code Online (Sandbox Code Playgroud)\n2.以下是代码详细信息:\n models.py:
\nfrom 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\nRun Code Online (Sandbox Code Playgroud)\n这是routes.py:
\nfrom 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()\nRun Code Online (Sandbox Code Playgroud)\n这是app.py的代码
\nfrom 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')\nRun Code Online (Sandbox Code Playgroud)\n
对于极简烧瓶应用程序,请考虑这种结构:
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)