この質問はよく聞かれましたが、質問はtxtファイルやフォームのデータを使用することと関係しています。 jsonファイルを使用しているときにcurlを使用してデータをPOSTすることはできますが、データを手動でcurlステートメントに追加することでどのように処理できるかを知りたいと思います。私もcurlステートメントでPUTを使ってみましたが、うまく動作するようにはできませんでした。私は多くの質問を見ていましたが、IDや何かのように使うのがほとんどで、私は3つの事柄でPOSTとPUTしようとしています。また、私は、ステートメント内のデータを少し変更しようとしましたが、ブラケットの置き換えのような違うエラーを与え続けました。この初心者のためのPlzヘルプU_Ucurlを使用して複数のデータをPOSTして更新する
データベースに投稿するための私のカールの文はです。
curl -X POST -d '{"todo_ID":18,"UserID":6,"details":"Stop putting in the same things"}' -H "Content-Type:application/
json" http://127.0.0.1:5000/
このエラーは、私は変更を加えようとしましたが、同じエラーが表示されます。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>400 Bad Request</title>
<h1>Bad Request</h1>
<p>The browser (or proxy) sent a request that this server could not understand.<
/p>
私のカール文をPUT使用して、私は基本的に私は、POSTのために取得し、同じエラーを取得し
curl -X PUT -H "Content-Type:applicat
ion/json" -d {"todo_ID":1,"UserID": 3,"details":"hi let it go"} http://127.0.0.1
:5000/update/1
です。
マイコードです。
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)
class JsonModel(object): #Class for making objects JSON serializable
def as_dict(self):
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
class User(db.Model, JsonModel): #Class which is a model for the User table in the database
User_ID = db.Column(db.Integer, primary_key = True)
FirstName = db.Column(db.String(20))
LastName = db.Column(db.String(20))
def __init__(self,User_ID,FirstName, LastName):
self.User_ID = User_ID
self.FirstName = FirstName
self.LastName = LastName
class Todo(db.Model, JsonModel): #Class which is a model for the Todo table in the database
todo_ID = db.Column(db.Integer, primary_key = True)
UserID = db.Column(db.Integer, db.ForeignKey("user.User_ID"))
details = db.Column(db.String(30))
def __init__(self,todo_ID, UserID,details):
self.todo_ID = todo_ID
self.UserID = UserID
self.details = details
@app.route('/', methods = ['POST']) #Uses POST method with same URL as GET method to add new information to Todo table.
def create_dev():
dev = Todo(request.json["todo_ID"], request.json["UserID"], request.json["details"])
db.session.add(dev)
db.session.commit()
return json.dumps([{'dev': dev}]), 201
@app.route('/update/<int:todo_ID>', methods = ['PUT'])
def update_todo(todo_ID):
dev = Todo.query.get(todo_ID)
dev.UserID = Todo(request.json["UserID"])
dev.details = Todo(request.json["details"])
db.session.update(dev)
db.session.commit()
return jsonify({ 'dev': dev})
@app.before_first_request #Creates everything before the first request.
def startup():
db.create_all()
if __name__ == '__main__':
app.run()
フラスコ報告にはどのような誤りがありますか?ログをチェックしたか、デバッグモードを有効にしてアプリケーションを実行しようとしましたか? – dirn
あなたは窓にいますか?あなたの 'curl' json文字列が正しくエスケープされていない可能性があります。ウィンドウ上で – Doobeh
うん。 –