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 了解详情。
我在 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 了解详情。