您好我有一个django应用程序,我想知道在提交GET请求后是否有更好的方法来显示我的URL。
urlpatterns = [
...
re_path(r'^reporting/$', ReportView.as_view(), name='report'),
]
当我到localhost:8000 /报告显示一个表单,然后单击一个单选按钮并提交时,它需要我:
http://localhost:8000/reporting/?run=2&submit=Search+for+run
我更喜欢它,如果它是:
http://localhost:8000/reporting/run=2/
因为此页面显示另一个表单,我想在其中添加'对此:
http://localhost:8000/reporting/run=2/choice=primary/
这是可能的 - 我是否必须有几个与不同视图相关的不同URL?
答案 0 :(得分:3)
您可以通过输出表单中的隐藏字段来保留现有参数,而不是试图破坏这样的URL(我会挑战你的方式“更干净”),然后将其与可见的一起发送的:
<form method="GET">
{% for key, value in request.GET.items %}
<input type="hidden" name="{{ key }}" value="{{ value }}">
{% endfor %}
.. rest of form ..
</form>
答案 1 :(得分:1)
@ Daniel的回答是正确的。
但你问题的答案
Is this possible - would I have to have several different URLS relating to different views?
也是。
您的ReportView
有点ListView
。我想它会显示Report
的所有列表。
然后,您可以从报告中生成DetailView
- 每页显示一个报告对象。
应该是
http://localhost:8000/reporting/2/
而不是2
,您可以添加任何您想要的内容(报告标题,找到slug) - 但它应该是独一无二的,所以我建议pk
(id)或{{ 1}}。
对于制作slug
,您必须制作视图(例如DetailView
),添加网址以及制作视图模板。
您应该查看django detailview docs以获取更多信息。