2017-06-28 8 views
2

送信されたフォームからREST APIにデータをリダイレクトする適切な方法が見つかりません。フォーム(wtforms)からREST API(フラスコレスレス)にPOSTリクエストを正しくリダイレ​​クト/送信する方法はありますか?

現在、以下の例のように、 "POST"メソッドはビュー/ルートで処理されます(ルート "add_person()"を参照)。

私のサンプルデータモデル(SQLAlchemyのベース):HTMLを経由してレンダリングするための

class Person(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.String(20)) 

フォーム(wtformsベース):

class PersonForm(FlaskForm): 
    name = TextField("Person name", validators=[DataRequired()]) 

ビュー/ルート宣言:

@views.route('add_person', methods=["GET", "POST"]) 
def add_person(): 
    form = PersonForm() 
    if request.method == 'POST' and form.validate_on_submit(): 
     person = Person() 
     person.name = form.name.data 
     db.session.add(person) 
     db.session.commit() 
     return redirect(url_for('view.add_person')) 
    return render_template('person_add.html', form=form)   

HTMLテンプレート:

<form method="POST" action="/add_person"> 
    {{ form.csrf_token }} 
    {{ form.name.label }} {{ form.name(size=20) }} 
    <input type="submit" value="Submit"> 
</form> 

今、データベース/ CRUD関連のアクションをREST APIに委譲したいと思います。

"人物"データモデル用に生成されたAPIエンドポイントは、 "/api/person"です。

"/add_person" 

:私はから、フォームの「アクション」を切り替えると

"/api/person", 

、私はAPIのURLにリダイレクトしていますので、私はそれがあることを行うための適切な方法ではないと思います。

私はまだビュー/ルート処理を使用して、 "Person"オブジェクトを永続させる代わりにPOST API呼び出しを行うべきだと思います。これは一番クリーンなソリューションですか?私はこれにどのようにアプローチできますか?

答えて

0

私はこれに自分自身で答えるでしょう。 私はFormの "/ add_person" POSTアクションでFlaskで処理された後、Pythonの "要求"ライブラリを使用してAPIエンドポイントにリクエストを行いました。

関連する問題