質問: [ url(r'^$', views.index, name='index'), url(r'^dictionary/ここにどう書けばよろしいのでしょうか?/$', views.dictionary, name='dictionary'), ] ``` 質問内容がわかりにくいかもしれませんが、ご教授お願いできればなと思います。 どうかよろしくお願いします。
回答: 一応 ``` /^(%[A-F0-9][A-F0-9])+$/ ``` でマッチできますが,htmlを出力するのであれば,間接的に/searchなどを指定して,search.pyなどのファイルに/search?params=%E4%BD%A0%E5%A5%BDなどクエリパラメータ付きリクエストを送って,search.pyのなかで、パラメータに対応したhtmlをresponseとして返すというような設計の方が一般的なように思います。 もし質問者さまの提示されている設計を採用する絶対の理由がない場合は,ご紹介した設計に変更されることをお勧めします。 追記 djangoのドキュメントのこの項目で説明されているようにrenderというメソッドをpythonコードから呼び出すと,urlで呼ばれたpythonコードからユーザーに返すhtmlファイルを自由に変更することができます。 次にurlというのはページを呼び出すurl文字列の後に?という文字列をつけると,それ以降の文字列をサーバに送信することができます(ただし,この文字列を送る時は,(データ名=データの値)という決まりがあります。)。その文字列をサーバ側で受け入れるようにプログラミングを行なっていれば,その送られたデータを元にユーザーへの処理を変更することができます。 例えば,/searchというurlで呼ばれた時にsearch.pyが呼ばれる仕組みになっていたとして,/search?params=%E4%BD%A0%E5%A5%BDとすると,`request.META['QUERY_STRING']["params"]`という変数に你好,という文字列が入るのでこれをrenderに渡せば実現できます。(例ではviewにこの値をいれたとします),render(~, view + '.html',~)。 Amazonは,urlマッチ方式でプログラミングをしていますね。これを参考にしたいのであれば,この記事や公式ドキュメントのようにdjangoでは,`(?P\w{0,50})`というように,`?P<変数名>正規表現`で,正規表現の条件を満たすurlに埋め込まれた文字列を変数で受け取れるので,これを同様にrenderにいれたりif文で条件分岐させてあげれば上手くいきます。