Django格式网址

pro*_*ype 0 django format url

我是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
Run Code Online (Sandbox Code Playgroud)

进入这个:

example.com/search/Test/London/SomeCategory
example.com/search/post/London/SomeCategory
example.com/search/post/city/SomeCategory
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?表格如何呈现这种外观?

谢谢!

jro*_*jro 5

它看起来像这样:

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

......有这样的观点:

def name_of_view(request, title, city, category):
    ...
Run Code Online (Sandbox Code Playgroud)

然后,您的表单将看起来如下:

<form method="post" action="{% url name_of_view title city category %}">
  ...
</form>
Run Code Online (Sandbox Code Playgroud)

重点是您需要为不需要某些部分时提供默认参数(例如,title或者city,根据您的示例).你必须在网址中提供它们.这意味着在视图中处理它们时,您需要检查它们是否具有某些特殊值,并有条件地处理这些值.

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