0

私はDjangoを初めて使用するので、この質問が初心者である場合は申し訳ありません. GET から受け取った Django の URL を次のようにフォーマットしたいと思います。

example.com/search?title=Test&city=London&category=SomeCategory
example.com/search?title=&city=London&category=SomeCategory
example.com/search?title=&city=&category=SomeCategory

これに:

example.com/search/Test/London/SomeCategory
example.com/search/post/London/SomeCategory
example.com/search/post/city/SomeCategory

これを行う最善の方法は何ですか?これを送信するフォームはどのようになりますか?

ありがとう!

4

1 に答える 1

5

次のようになります。

url(r'^search/(?P<title>\w+)/(?P<city>[\w -_]+)/(?P<category>[\w -_]+/$',
     'name_of_view', name='name_of_view')

...そのような見方で:

def name_of_view(request, title, city, category):
    ...

次に、フォームは次の行に沿って表示されます。

<form method="post" action="{% url name_of_view title city category %}">
  ...
</form>

ポイントは、いくつかの部分が不要な場合にデフォルトの引数を提供する必要があることです(例のようにtitleorcityなど)。ただし、それらを URL に指定する必要があります。これは、ビューでそれらを処理するときに、特別な値があるかどうかを確認し、条件付きで値を処理する必要があることを意味します。

URLパターンの正規表現について、知識に基づいた推測を行ったことに注意してください。必要に応じて調整してください。

于 2012-10-19T09:58:18.267 に答える