ПОМОГИТЕ, у меня есть файл appp.py
:
from flask import Flask, jsonify, request, make_response
import json
from flask_restful import Api
from flask_sqlalchemy import SQLAlchemy
import models,resources
app = Flask(__name__)
api = Api(app)
api.add_resource(resources.UserRegistration, '/registration')
api.add_resource(resources.UserLogin, '/login')
api.add_resource(resources.UserLogoutAccess, '/logout/access')
api.add_resource(resources.UserLogoutRefresh, '/logout/refresh')
api.add_resource(resources.TokenRefresh, '/token/refresh')
api.add_resource(resources.AllUsers, '/users')
api.add_resource(resources.SecretResource, '/secret')
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SECRET_KEY'] = 'waaahawhawaahhawhaw'
db = SQLAlchemy(app)
@app.before_first_request
def create_tables():
db.create_all()
@app.route('/')
def index():
return jsonify({'message': 'Hell to the World!'})
if __name__ == '__main__':
app.run(debug = True)
, а вот файл models.py
:
from appp import db
class UserModel(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key = True)
username = db.Column(db.String(120), unique = True, nullable = False)
password = db.Column(db.String(120), nullable = False)
def save_to_db(self):
db.session.add(self)
db.session.commit()
@classmethod
def find_by_username(cls, username):
return cls.query.filter_by(username = username).first()
и файл resources.py
from flask_restful import Resource, reqparse
from models import UserModel
parser = reqparse.RequestParser()
parser.add_argument('username', help = 'This field cannot be blank', required = True)
parser.add_argument('password', help = 'This field cannot be blank', required = True)
class UserRegistration(Resource):
def post(self):
data = parser.parse_args()
if UserModel.find_by_username(data['username']):
return {'message': 'User {} already exists'. format(data['username'])}
new_user = UserModel(
username = data['username'],
password = data['password']
)
try:
new_user.save_to_db()
return {
'message': 'User {} was created'.format( data['username'])
}
except:
return {'message': 'Something went wrong'}, 500
Когда я пытаюсь запустить приложение, я получаю следующее сообщение об ошибке:
ImportError: невозможно импортировать имя 'UserModel'
Действительно, я нашел другой вопрос, напримермой, и они помогли мне понять, почему я получаю эту ошибку, но никто из них не помог мне обойти ее.Я предполагаю, что python (или flask) не может загрузить класс UserModel
из model.py, потому что model.py (или класс UserModel
) все еще инициализируется, и ему нужен db из appp.py, который ожидаетresources.py, который не может быть загружен, потому что он ждет models.py.Как это исправить ????Кстати, я новичок во всем этом, и я просто следую этому учебнику
Вот структура проекта
test
|---appp.py
|---models.py
|---resources.py
3 файла находятся рядом друг с другомв тестовой папке.
Спасибо