2017-04-19 8 views
-1

CRUD API를 플라스크에 작성했지만 GET 요청을 시도 할 때마다 "내부 서버 오류"라는 오류 메시지가 나타납니다. POST 요청도 나를 위해 작동하지 않습니다. POST는 잘못된 요청임을 나타내는 400 오류를 반환합니다. 여기서 내가 뭘 잘못하고 있니? 내 config.py 파일HTTP/1.0 500 플라스크에 내부 서버 오류가 발생했습니다.

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') 

내가 잘못 여기서 뭐하는 거지

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() 

다음 내 run.py 파일

다음은? 어떤 도움을 주시면 감사하겠습니다.

+0

당신은 500 에러 페이지에'디버그 = TRUE ', 당신은, 대화 형 웹 기반 디버거, 완전한 역 추적을 볼 수와 응용 프로그램을 실행하는 경우 . – jwg

+0

@jwg 콘솔을 확인한 결과 "no such table : user [SQL : u'SELECT user.username AS user_username, user.password AS user_password, user.name AS user_name \ n FROM user ']" –

+2

에 전화를 건 사람이 있습니다. ['db.create_all()'] (http://flask-sqlalchemy.pocoo.org/2.1/quickstart/#a-minimal-application)을 적당한 장소에 두십시오. –

답변

0

클래스를 정의한 후에 User 테이블을 '생성'해야합니다. 그렇지 않으면 메모리에 표시되지 않습니다. http://flask-sqlalchemy.pocoo.org/2.1/api/#flask.ext.sqlalchemy.SQLAlchemy.create_all

을 수행하는 방법은 다음과 같습니다

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 

db.create_all() 

...the rest of your code