2017-12-03 8 views
0

フラスコとWTフォームを使用して、ユーザー入力をフォームで取得し、ユーザー入力を別のルートにリダイレクトしようとしています。htmlの後にpost htmlを使用する

このデータをWT形式で使用します。一度私はデータを見て、すべての罰金をチェックした。データベースの新しいエントリとして保存します。

問題:このフォームを転記した後、私は投稿依頼として処理することができません。

@app.route('/', method =[POST,GET]) 
def home(): 
    forms = inputForms(request.form) 
    if form_validate() and request.POST: 
     value=forms.input.data 
     redirect(url_for(/edit, value=value) 
    return render_template('input.html') -- Initial page where getting user input 
    @app.route('/edit', method =[POST,GET]) 
    def edit(value): 
     data= getdata(value) 
     if data == 'error': 
      return render_template('error.html') 
     else: 
      form=request.form(data=data) 
      return render_template('data.html', form=form 
      if form_validate() and request.POST: 
       save() 

フォームをレンダリングしてから、どのように使用することができますか。

私はフォームを取得しますが、一度、私はあなたのコメントに基づいて保存オプション

+0

が、私はそれはまだ 'POST'のでrequest.POST'が失敗し'た場合だとは思わない:それは、としてあなたのルートを持っている方が良いでしょう。 – senaps

+0

あなたは何か他の方法を提案することができます応答私は、Pythonにも新しいコーディングです – Rajesh

答えて

0

に先に移動することはできませんよ返すことができるよ、あなたはあなたのポストのアクションを変更することができます。あなたのフォームは別のルートにPOSTを編集しました。そして、あなたはそのrouteへの検証のためにあなたの機能を移動することができ、あなたのテンプレートでは、上記を使用して

<form method="POST" action="{{url_for('edit')}}"> 
{{ form.csrf_token }} 
{{ form.name.label }} {{ form.name(size=20) }} 
<input type="submit" value="Go"> 

@app.route('/edit', method =[POST,GET]) 
def edit(): 
    if request.method == 'POST' and form.validate(): 
     pass 

この方法、あなたはeditルート内のすべてを処理することができます。 あなたのhomeルートを変更するだけでフォームをレンダリングできます。

@app.route('/', method =[POST,GET]) 
def home(): 
    forms = inputForms(request.form) 
    return render_template('input.html') 

と、あなたのroutesためtrailing slashを持っている必要があります。あなたはredirect` `を通して、あなたの` edit`のFUNCになった場合

@app.route('/edit/', method =[POST,GET]) 
def edit(): 
    pass 
関連する問題