2016-11-02 11 views
0

APIでPOSTを実装しようとすると、URLにエラーが発生します。このURLにはMETHOD NOT AllowedというURLにエラーが表示され続けます。何か不足していますか?あなたがサーバーを開こうとすると、POSTは直接動作しませんか?私は失われたsooooだ。POST、PUT、DELETEを使用するフラスコ

from flask import Flask, jsonify,json, request, abort 
from flask_sqlalchemy import SQLAlchemy 


app = Flask(__name__) 
app.config.from_pyfile('Config.py') 
db = SQLAlchemy(app) 
db.create_all() 

class JsonModel(object): 
    def as_dict(self): 
     return {c.name: getattr(self, c.name) for c in self.__table__.columns} 

class User(db.Model, JsonModel): 
    User_ID = db.Column(db.Integer, primary_key = True) 
    FirstName = db.Column(db.String(20)) 
    LastName = db.Column(db.String(20)) 

    def __init__(self,FirstName, LastName): 
     self.FirstName = FirstName 
     self.LastName = LastName 

class Todo(db.Model, JsonModel): 
    todo_ID = db.Column(db.Integer, primary_key = True) 
    UserID = db.Column(db.Integer, db.ForeignKey('User_ID')) 
    details = db.Column(db.String(30)) 

    def __init__(self,details): 
     self.details = details 

@app.route('/', methods = ['GET']) 
def index(): 
    return json.dumps([u.as_dict() for u in User.query.all()+Todo.query.all()]) 

@app.route('/todo/<int:UserID>', methods = ['GET']) 
def get(UserID): 
    return (list[Todo.query.get(UserID)]) 

@app.route('/p/', methods = ['POST']) 
def create_dev(): 
    if not request.json or not 'name' in request.json: 
    abort(400) 
    dev = Todo(request.json.details,request.json.get('details','')) 
    db.session.add(dev) 
    db.session.commit() 
    return json.dumps([{'dev': dev}]), 201 

if __name__ == '__main__': 
    app.run() 
+0

このエラーにはどのようなエラーがありますか? – Fejs

+0

POSTと関係がある/ p/1です –

+0

どの方法が許可されていないのですか?私の推測では、http://some.address/pにアクセスしてページをロードしようとしていて、ここではGETメソッドがないため、アプリケーションが不平を言っているということです。 – Fejs

答えて

0

許可されたメソッドのリストには、GETメソッドを追加する必要があります。ページを読み込もうとすると、まずGETメソッドを使用してページ自体を取得する必要があります。次に、ページに何かを入力した後、POSTメソッドを使用して、アプリケーションにデータを渡します。このアプリでは、どのメソッドが呼び出されたかを確認する必要があります。このようなもの:

@app.route('/p', methods=['GET', 'POST']) 
def create_dev(): 
    if request.method == 'GET': 
     return render_template('p_page.html') 

    # If You get to this line, it means it is POST method 
    do_something_here() 
+0

ページに何かを入力するとどういう意味ですか?私はブラウザに何も追加できません。 –

+0

あなたはアプリにどのデータを送信していますか?私はいくつかの入力フィールド、ラジオボタン、ドロップダウンリストがあると思いますか? – Fejs

+0

私はアプリを作りません。データベースからデータを取得し、挿入し、削除し、削除する基本的なAPI –

関連する問題