【发布时间】:2021-08-30 16:30:33
【问题描述】:
我正在学习如何使用flask-restful 和jwt 在python 中创建restful api,现在我遇到了导入问题。这是错误和我的源代码 错误: py .\api.py
回溯(最近一次通话最后一次): 文件“C:\Users\Amoungui\Documents\Projects\API-playlist-master\api.py”,第 4 行,在 从应用程序导入应用程序,api 文件“C:\Users\Amoungui\Documents\Projects\API-playlist-master\app.py”,第 4 行,在 从安全导入身份验证,身份 文件“C:\Users\Amoungui\Documents\Projects\API-playlist-master\security.py”,第 1 行,在 从用户导入用户 文件“C:\Users\Amoungui\Documents\Projects\API-playlist-master\User.py”,第 1 行,在 从应用程序导入数据库 ImportError:无法从部分初始化的模块“app”导入名称“db”(很可能是由于循环导入)(C:\Users\Amoungui\Documents\Projects\API-playlist-master\app.py)
这是文件代码 index.py:
from flask import request
from flask_restful import Resource
from flask_jwt import jwt_required
from app import app, api
from CustomerRepository import CustomerRepository as Repository
items = Repository.findAll()
class UserController(Resource):
@jwt_required()
def get(self, id):
item = next(filter(lambda x: x['id'] == id, items), None)
return {'item': item}, 200 if item else 404
def post(self):
data = request.get_json()
new_item = {'tel': data['tel'],'password':data['password']}
items.append(new_item)
return new_item
def delete(self, id):
global items
items = list(filter(lambda x:x['name']!=id,items))
return items
def put(self, id):
data = request.get_json()
item = next(filter(lambda x:x['id'] == id, items),None)
if item is None:
item = {'tel':data['tel'], 'password':data['password']}
items.append(item)
else:
item.update(data)
class ItemList(Resource):
def get(self):
return{'item':items}
api.add_resource(UserController,'/items/<string:name>')
api.add_resource(ItemList,'/items')
app.run(port=4000,debug=True)
我拥有所有配置的 app.py
from flask import Flask
from flask_mongoengine import MongoEngine
from flask_restful import Api
from security import auth,identity
from flask_jwt import JWT
import urllib
app = Flask(__name__)
database_name = "API"
mongodb_password = ""
DB_URI = "mongodb+srv://m001-student:"+ urllib.parse.quote(mongodb_password) +"@cluster0.hr17o.mongodb.net/{}?retryWrites=true&w=majority".format(database_name)
app.config['MONGODB_HOST'] = DB_URI
app.secret_key = '#0#'
api = Api(app)
jwt = JWT(app, auth, identity)#/auth
db = MongoEngine()
db.init_app(app)
CustomerRepository.py
from flask import make_response, request, jsonify
from User import User
class CustomerRepository():
def findAll():
users = []
for user in User.objects:
users.append(user)
return make_response(jsonify(users), 200)
用户.py:
from app import db
class User(db.Document):
customer_id = db.IntField()
tel = db.StringField()
password = db.IntField(6)
def to_json(self):
return {
"customer_id": self.customer_id,
"tel": self.tel,
"password": self.password,
}
security.py
from User import User
from werkzeug.security import safe_str_cmp
def auth(tel,password):
user = User.findByName(tel)
if user and safe_str_cmp(user.password,password):
return user
def identity(payload):
id = payload['identity']
return User.find_by_id(id)
def findByName(number):
customer_obj = User.objects(tel=number).first()
if customer_obj:
return customer_obj
def findById(customer_id):
customer_obj = User.objects(customer_id=customer_id).first()
if customer_obj:
return customer_obj
提前感谢您的帮助
【问题讨论】:
标签: python-3.x flask