【问题标题】:Django - URL template using forms don't match with urlpatternDjango - 使用表单的 URL 模板与 urlpattern 不匹配
【发布时间】:2014-01-27 06:36:20
【问题描述】:

我是 Django 的新手,虽然我使用 Twisted 在 python 中编写代码,但我在处理这个平台方面还有很长的路要走。我有一个关于在表单中使用 url 模板的问题。我已经定义了一个正则表达式路径

(url(r'^search/(?P<key>\w*)/$', views.searchKey, name='search'),)

在我的 urls.py 中。当我对 url 路径进行硬编码时,url 路径有效。例如:

"/search/potatoes/"

但是当我使用表单向该路径发布搜索时,我总是得到“/search//”。下面是我的表单代码。似乎发生了什么?

<form action="{% url 'feeds:search' key %}" method="post">
{% csrf_token %}
<input type="text" name="key" id="key" />
<input type="submit" value="Filter" />
</form>

提前致谢!

【问题讨论】:

  • 您是否在模板中打印出key 变量以确保它确实存在?
  • 是的蒂米,问题是我似乎无法将文本字段的值作为我的参数值传递。每当我单击过滤器按钮时,它总是会转到“/search//”。你认为我哪里做错了?

标签: python regex django


【解决方案1】:

您已将其设置为关键字参数,因此我认为您需要使用 {% url 'feeds:search' key='potatoes' %} 或者如果您有实际变量 {% url 'feeds:search' key=key_variable %}

现在,如果您要让表单提交到该 URL,您需要在前端执行一些 JavaScript 以根据输入到 key 字段中的内容更改该 URL。

【讨论】:

  • 嘿乔希,我这样做了
    似乎 [key.value] 是总是空的,虽然它不是因为我也通过 javascript 警报打印值。你知道为什么那是我的朋友吗?谢谢!
  • 添加 django debug toolbar 并查看实际发送到模板的内容。
  • 再次感谢乔希!你是一个很大的帮助! :-) 还有一个问题乔希。为什么每次点击提交时 [key.value] 总是为空或为空?这是表单代码。
    {% csrf_token %}
  • @Earvin 您需要使用 request.POST 值在后端捕获值。你不应该做{{ key.value }}。这里有一些示例代码:gist.github.com/joshkehn/8661501
猜你喜欢
  • 1970-01-01
  • 2021-08-24
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-26
  • 2020-12-13
相关资源
最近更新 更多