【发布时间】:2016-06-01 18:16:06
【问题描述】:
假设我有以下毫无意义的示例视图:
def foo(request, input):
return HttpResponse()
在模板中我有一个表单:
<form method="get" action="{% url 'foo' ??? %}">
<input id="myinput" type="text" name="myinput">
...
</form>
最后,我的 URLconf 中有以下网址:
urlpatterns = [
url(r'^foo/(.+)/', views.foo, name='foo'),
]
我想做的是将用户输入的值传递给#myinput id 的输入到foo() 视图函数。换句话说,您应该可以在html输入中输入bar,当您提交表单时,它会带您到foo/bar/。
我知道在 foo 视图中,我可以使用 request.GET['myinput'] 轻松访问输入的值,但我也希望它显示在 url 中。
这似乎应该是一个相当普遍的任务,但我还没有想出一个解决方案。任何建议,将不胜感激。我的第一个 Django 站点的科学怪人怪物几乎完成了,这是我遗漏的最后一部分。
【问题讨论】:
-
您确定要这样做吗?您必须使用非常通用的正则表达式定义一个视图以将它们转发到,这将阻止您在
foo/下放置几乎任何其他内容。 -
即使在 REST 接口中,构造这样的 URL 也是非常不寻常的。拥有类似
items/search/?search_query=nameofitem的东西更为常见 -
如果您只是将
{% url 'foo' %}与 GET 操作一起使用,它将自动发生。 -
使用没有
???的内容并将name="myinput"更改为name="search_query"。其余的将像魔术一样发生:D -
@elethan 我可以这样做,但是您的问题正文中已经有了很好的答案。从 UPDATE 中取出部分并将其移至答案。你可以接受你自己的。我宁愿支持你的,也不愿抄袭它。