2016-05-06 8 views
0

私は人々がデータベースを検索できるようにWebサービスを構築しています。私はユーザーと企業があると言います。それぞれのユーザーと企業は自分のIDと考えられています。だからを検索すると、そのユーザーの情報が得られます。一方、会社を検索した場合はそのユーザーの情報が得られます。 これは、ユーザーが<id>と入力できる2つの単純な入力テキスト(ユーザー用と企業用)を作成しました。私の問題は、入力テキストから値を取得すると、myurl/users/idではなく、myrul/users?<id>が得られるということです。私はスラッシュをハードコードしようとしましたが、myrul/users/?<id>を取得します。 私の質問は、どうやって入力テキストを変数としてではなくURLとして得ることができるかということです。私のPythonスクリプトで 変数としてではなくURLとして入力フォームを取得

<!-- USER id --> 
    <form method='GET' action={{url_for('get_info_by_id', type_collection='user')}}> 
     <input type="text" name="my_id"/><input type="submit" value="Go">       
    </form> 

<!-- COMPANY id--> 
    <form method='GET' action={{url_for('get_info_by_id', type_collection='company')}}> 
     <input type="text" name="my_id"/><input type="submit" value="Go">      
    </form> 

(フラスコ)

@app.route('myurl/<type_collection>/<my_id>') 
get_info_by_id(type_collection,my_id): 
    # search into the database and return info about that id 
+2

yoフォーム変数をクエリ文字列または投稿本体ではなくURL内に配置したい場合は、JavaScriptを使用してフォーム送信イベントを取得し、新しいURLに移動する必要があります。 – dirn

+0

@dirnは正しいですが、フォームを取得してデータベースを検索してオブジェクトを返そうとしているのであれば、私の答えを見てください。 – dkhamrick

+0

JavaScriptを使用します。ありがとうございます。 – Dovi

答えて

1

@dirnは論評で示唆したように、他の誰かにも興味を持っている場合は、私にはJavaScriptを通じてそれを作った、ここでのコードは次のとおりです。

HTML:

<!-- USER id --> 
<form method='GET' class="search" id="user" action=""> 
    <input type="text" name="my_id"/><input type="submit" value="Go"> 
</form> 

<!-- COMPANY id--> 
<form method='GET' class="search" id="company" action=""> 
    <input type="text" name="my_id"/><input type="submit" value="Go"> 
</form> 

JS:

$(".search").submit(function(event){ 
    event.preventDefault(); 
    var my_id = $(this).find(":input").val(); 
    url = 'myurl/'+ $(this).attr("id") + '/' + my_id; 
    window.location.href = url;  
}); 

python(フラスコ)

@app.route('myurl/<type_collection>/<my_id>') 
get_info_by_id(type_collection,my_id): 
    # search into the database and return info about that id 
0

変数を使用するか、またはしていることができない理由がある:私のHTMLは、このようなJinja2のコードを持っているので、

私はフラスコを使用していますあなたはあなたがあなたの検索を行うことができるようにURLにそれを取得しようとしていますか?私は手足の外に出て、フォームとデータベースの検索を機能させたいと思ったので、次のように試してみてください。

はそうのようなあなたのルートを調整し、次のよう

@app.route('myurl/<type_collection>/') 
def findAllTheThings(): 
    if not request.form['my_id']: # Just check if a specific entity is chosen 
     return render_template('YourTemplateHere') # If no entity, then render form 
    entity_id = request.form['my_id'] 
    get_info_by_id(type_collection, entity_id): 
    # search into the database and return info about that id 

今すぐテンプレートを調整:なしエンティティが選択されていない場合

<!-- USER id --> 
<form method='GET' action={{url_for('findAllTheThings', type_collection='user')}}> 
    <input type="text" name="my_id"/><input type="submit" value="Go">       
</form> 

<!-- COMPANY id--> 
<form method='GET' action={{url_for('findAllTheThings', type_collection='company')}}> 
    <input type="text" name="my_id"/><input type="submit" value="Go">      
</form> 

今、あなただけのフォームをレンダリングします。特定のIDを選択する必要があることを知らせるためにフラッシュを投げることができます。エンティティが選択されている場合は、関数を正しく呼び出します。

+0

ありがとうございますが、私はURLとして、変数としてではなく – Dovi

関連する問題