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>

关键是您需要在不需要某些部分时提供默认参数(例如titleor city,根据您的示例)。不过,您必须在 url 中提供它们。这意味着在您的视图中处理它们时,您需要检查它们是否确实具有某些特殊值,并有条件地处理这些值。

请注意,我对 url 模式中的正则表达式进行了一些有根据的猜测:根据需要进行调整。

于 2012-10-19T09:58:18.267 回答