Django:使用干净的 URL 和 HTTP GET

Django: use clean URLs with HTTP GET

我在 django 中有一个表单,看起来像这样(渲染后):

<form action="/app/detail/" method="get">
  <p><label for="id_detail">Choose which items to view:</label>
  <select multiple="multiple" id="id_items" name="items">
     <option value="23">Item 23</option>
     <option value="18">Item 18</option>
     <option value="22">Item 22</option>
  </select></p>
  <input type="submit" value="View" />
</form>

关联的 url conf(在 app 中)包含此模式:

url(r'^detail/$', views.detail, name='detail')

访问详细视图的 URL 最终看起来像这样(取决于在多选框中选择了哪个选项:

http://hostname/app/detail/?items=23&items=18&items=22

views.py 中,然后我可以使用 request.GET.getlist('items') 来获取选择的项目。有没有一种方法可以完成所有这些操作,使 URL 在没有 URL 中的 ?param=value& 的情况下看起来更干净? Django's URL dispatcher documentation 讨论了看起来干净的 URL,但这些示例大多是 URL 本质上是分层的。

你刚才描述的url就是GET方法传递参数的方式。您当然可以使用基础 url,但将您的表单更改为使用 POST 方法。 POST 参数未通过 url 传递,因此这很可能是您需要的。查看 django docs 了解详情。