前提
現在、拾得物を管理するシステムを制作しております。
Formからの入力内容をredirectで渡す際に、値が入っていないというエラーが出力されます。
実現したいこと
入力内容を指定したルートに渡す
発生している問題・エラーメッセージ
tables() missing 2 required positional arguments: 'item_name' and 'item_color'
該当のソースコード
views.py
1# indexエンドポイント 2@search_items.route("/", methods=["GET", "POST"]) 3def index(): 4 search_form = Search() 5 if search_form.validate_on_submit(): 6 items_name = search_form.item_name.data 7 items_color = search_form.item_color.data 8 return redirect( 9 url_for("search_items.tables", item_name=items_name, item_color=items_color) 10 ) 11 12 return render_template("search_items/index.html", search_form=search_form) 13 14@search_items.route("/tables") 15def tables(item_name, item_color): 16 search_images = ( 17 db.session.query(Items) 18 .filter_by(item_name=item_name, item_color=item_color) 19 .all() 20 ) 21 22 return render_template("search_items/tables.html", search_images=search_images)
forms.py
1from flask_wtf import FlaskForm 2from wtforms import SelectField, SubmitField 3 4 5class Search(FlaskForm): 6 item_name = SelectField( 7 label=("品目"), 8 choices=[ 9 ("ballpoint", "ボールペン"), 10 ("banana", "バナナ"), 11 ("coffee_mug", "コーヒーマグ"), 12 ("other", "その他"), 13 ], 14 ) 15 16 item_color = SelectField( 17 label=("色"), 18 choices=[ 19 ("red", "赤系"), 20 ("blue", "青系"), 21 ("green", "緑系"), 22 ("patterned", "柄"), 23 ("other", "その他"), 24 ], 25 ) 26 27 submit = SubmitField("検索")
index.html
1{% extends "detector/base.html" %} 2{% block title %}拾得物の検索{% endblock %} 3 4{% block content %} 5<h2>拾得物の検索</h2> 6<p>検索したい条件を指定してください。</p> 7<form action="{{ url_for('search_items.index') }}" method="POST"> 8 {{ search_form.csrf_token }} 9 <p> 10 {{ search_form.item_name.label }} {{ search_form.item_name }} 11 </p> 12 <p> 13 {{ search_form.item_color.label }} {{ search_form.item_color }} 14 </p> 15 <p> 16 {{ search_form.submit(class="btn btn-primary") }} 17 </p> 18</form> 19{% endblock %}
試したこと
htmlのserch_fotm.item_nameの後にvalueを設定してみたりしました。いろいろと条件を変えて試しましたが、同じエラーが出てきてしまいます。
有識者の方、どなたかご教授いただけると幸いです。
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。