-1
フラスコにCRUD APIを書いていますが、GETリクエストをしようとするたびに「内部サーバーエラー」というエラーが表示されます。 POSTリクエストも私のために働いていません。 POSTは、不正な要求であることを示す400エラーを返します。私はここで間違って何をしていますか?続きHTTP/1.0 500フラスコ内の内部サーバーエラー
は私run.pyファイル
from flask import Flask, jsonify, abort, request
from flask_restless import APIManager
from flask_sqlalchemy import SQLAlchemy
from flask import make_response
app = Flask(__name__)
app.config.from_pyfile('config.py')
db = SQLAlchemy(app)
class User(db.Model):
username = db.Column(db.String(50), primary_key=True)
password = db.Column(db.String(50))
name = db.Column(db.String(20))
def __init__(self, name, uname, pword):
self.username = uname
self.name = name
self.password = pword
@app.route('/api/users/', methods = ['GET'])
def index():
return jsonify({'users': User.query.all()})
@app.route('/api/<string:username>/')
def get_user(username):
return jsonify({'users': User.query.get(username)})
@app.errorhandler(404)
def not_found(error):
return make_response(jsonify({'error': 'Not found'}), 404)
@app.route('/api/users/', methods = ['POST'])
def create_user():
if not request.json or not 'name' in request.json:
abort(400)
user = User(request.json.username, request.json.get('name', ''), request.json.get('password',''))
db.session.add(user)
db.session.commit()
return jsonify({ 'User': user }), 201
@app.route('/api/users/<string:username>', methods = ['DELETE'])
def delete_user(username):
db.session.delete(Users.query.get(username))
db.session.commit()
return jsonify({ 'result': True })
@app.route('/api/users/<string:username>', methods = ['PUT'])
def update_user(username):
user = User.query.get(username)
user.username = request.json.get('username', ser.username)
user.name = request.json.get('name',user.name)
user.focus = request.json.get('password', user.password)
db.session.commit()
return jsonify({ 'user': user })
if __name__ == '__main__':
app.run()
以下は、私のconfig.pyファイル
import os
basedir = os.path.abspath(os.path.dirname(__file__))
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.sqlite')
SQLALCHEMY_MIGRATE_REPO = os.path.join(basedir, 'db_repository')
です私はここで間違って何をしているのですか?どんな助けも高く評価されます。
あなたは 'デバッグ= true'を持つアプリケーションを実行する場合は、500エラーページに、インタラクティブなWebベースのデバッガで、完全なトレースバックが表示されます。 – jwg
@jwgコンソールを確認したところ、「no such table:user [SQL:u'SELECT user.username AS user_username、user.password AS user_password、user.name AS user_name \ nFROM user]」というメッセージが表示されます。 –
['db.create_all()'](http://flask-sqlalchemy.pocoo.org/2.1/quickstart/#a-minimal-application)を適切な場所に置きます。 –