2016-06-01 8 views
-1

はのは、私は以下の無意味な例ビューを持っているとしましょう:パス<input>値

def foo(request, input): 
    return HttpResponse() 

と私は、フォームを持っているテンプレートで:

<form method="get" action="{% url 'foo' ??? %}"> 
    <input id="myinput" type="text" name="myinput"> 

    ... 

</form> 

は最後に、私は、以下のURLを持っています私のURLconf:

urlpatterns = [ 
    url(r'^foo/(.+)/', views.foo, name='foo'), 
] 

私がしたいことは、ユーザーが入力した値をth e idは#myinputからfoo()までです。別の言い方をすると、html入力にbarと入力することができます。フォームを送信するとfoo/bar/になります。

私はfooビュー内で入力の値に簡単にアクセスできることを知っています。これはrequest.GET['myinput']で簡単にアクセスできますが、それもURLに表示されます。

これはかなり一般的な作業であるようですが、私はまだ解決策を考え出すことができませんでした。任意の提案をいただければ幸いです。最初のDjangoサイトのFrankensteinのモンスターはほぼ完成しましたが、これは私が見逃している最後のものの1つです。

+0

本当にやり直してよろしいですか?それらを転送するための非常に一般的な正規表現を持つビューを定義する必要があります。これは 'foo /'の下に他のものを置くことを排除します。 –

+0

あなたはコースから離れていますが、私の実際のURLは全く異なります。私は少し私の例を単純化したと思います。 'items/search/nameofitem'のようになります。' nameofitem'は入力からビューに渡したい部分です。 – elethan

+0

これで解決しようとしている問題は何ですか? – marcusshep

答えて

2

私の誤解の元

私は私の例を簡略化し、アプリケーション固有のコードを使用して回避するための試みで、これは明確にしなかったが、私のユースケースは、単純な検索図です。ビューは実際に私がDjangoの旅の最初に書いた最初のビューの1つでした。私は間違いなくの代わりにPOSTというデータを送っていました。これは、アイテムfooを検索した場合、fooの詳細ページに移動しますが、URLはmysite/search/となります(つまり、検索クエリはURLには含まれていますが、リクエスト)、URL mysite/search/にアクセスして検索結果に戻ることはできません。私はこの質問に私のおもちゃの例ではGET要求を使用していたが

、私は私のアプリでPOSTを使用して、いくつかのマイナーな微調整して、私は自由のために必要な機能を得ることができることをしていたことを認識していませんでしたとても簡単に。私は、これはベテランや中間のWeb開発者にとっても非常に明白であることを知っていますが、WebやCS経験なしの誰かから、HTTPのようなものはちょっと混乱することがあります。少なくとも私のためにはそうです。これを私が理解できる方法で説明するために、2ビットの錬金術師に感謝します。私のおもちゃの例にこのすべてを適用

私は私の見解で渡されたパラメータを取り除くでしょう

def foo(request): 

    # If I want to do something with the search query, I can access it with 
    # request.GET['search_query'] 

    return HttpResponse() 

変化に私のテンプレートの私のフォーム:

<form method="get" action="{% url 'foo' %}"> 
    <input id="myinput" type="text" name="search_query"> 

    ... 

</form> 

と私のURLを変更する:

urlpatterns = [ 
    url(r'^foo/search/', views.foo, name='foo'), 
] 

@ 2ビットの錬金術師は「残りは魔法のように起こる」と言った。ユーザーがbarと入力してフォームを送信すると、foo/search/?search_query=barになります。これは私が探していたものです。

関連する問題