2017-07-21 9 views
0

小さな問題があり、誰かが私を助けてくれるのだろうかと思っています。Djangoの単純なURLマッピングの問題

は私がURLs.pyで

 <form class="navbar-form navbar-left" role="search" action="/library/search/"> 
      <div class="form-group" style="display:inline;"> 
      <div class="input-group"> 
       <input class="form-control" id="q" name="P" type="text" placeholder="Book Search""> 
       <span class="input-group-btn"> 
       <button class="btn btn-primary" type="submit"><i class="glyphicon glyphicon-search"></i></button> 
       </span> 
      </div> 
      </div> 
     </form> 

私は単語を入力し、次のようにURLが生成される提出ヒット、

http://127.0.0.1:8000/library/search/?P=Harry+Potter 

私が持っていることを、このようなテキスト検索ボックスを持っていますこのようなもの

ただし、上記のURLは正規表現では一致しません。私が手動で?P =をURLから削除しても問題ありません。

は、私は次の組み合わせのいくつかを試してみましたが、彼らはそれが何ができるかのどちらか

url(r'^search/(?P(.*)<search_result>[\w|\[email protected]+-]+)/$', views.search_view, name='search_view') 

任意のアイデアを動作しませんでしたか?あなたが正規表現で何を意味するのか?P誤解しまし

おかげ

答えて

2

。このグループは名前付きグループであり、キャプチャされ、キーワード引数によってビューに送信されます。その正規表現を満足させるURLは次のようである:

/library/search/harrypotter/ 

しかし、それはあなたが検索から欲しいものすべてではありません。あなたが作成したもの、つまりlibrary/search/?P=harry+potterのようなものが欲しいです。そのためにあなただけのパラメータなしのURLたい:

r'^search/$' 

を、ビュー内のデータを取得:

query = request.GET['p'] 

あなたはおそらくqではなくp使用したいが。

+0

ありがとう、特に詳しく説明してくれてありがとうございます。今日は確かに何かを学んだことは間違いありません。お時間をいただきありがとうございます。 – tom1123