【发布时间】:2013-11-28 14:35:13
【问题描述】:
我在 django 中使用动态 URL。它适用于整数值,如果动态部分是 URL 的结尾,则适用于字符串。当动态变量后面的 URL 中有一些其他组件时,说:
url(r'companies/(?P<comp_id>.+)/buy/?$',views.buy)
现在在 views.buy 函数中,
print comp_id
给我id1/buy。因此,它将整个剩余的 URL 作为 comp_id 变量。我该如何阻止它?
公司.html:
<html>
<head>
<title>{{ company.name }}</title>
</head>
<body>
Name:{{ company.name }}<br>
Worth: {{ company.company_worth }}<br>
<form action="/companies/{{ company.comp_id }}/buy/" method = "post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Buy">
</form>
</body>
【问题讨论】:
-
那是不可能的;你必须有一个像
companies/id1/buy/buy这样的网址才能发生。 -
在任何情况下,您都可以匹配
[^/]+来匹配任何不是斜线而不是.+的字符。 -
@MartijnPieters:
(?P<comp_id>[^/]+)也不起作用 -
您能显示其他网址吗?你有
companies/...也映射到view.buy吗? -
@SimeonVisser:不。只有这个 URL 被映射到 views.buy
标签: python regex django dynamic-url