我是Django的新手所以如果这个问题是noobish,我很抱歉。我想格式化从GET收到的Django网址,如下所示:
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
最好的方法是什么?表格如何呈现这种外观?
谢谢!
答案 0 :(得分: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>
重点是您需要为不需要某些部分时提供默认参数(例如title
或city
,如您的示例所示)。你必须在网址中提供它们。这意味着在视图中处理它们时,您需要检查它们是否具有某些特殊值,并有条件地处理这些值。
请注意,我对url模式中的正则表达式进行了一些有根据的猜测:如果需要,请进行调整。