2013-11-28 68 views
1

我在django中使用动态网址。它适用于整数值,如果动态部分是URL的末尾,则适用于字符串。当在动态变量之后的URL一些其他组件,说:django动态网址的怪异行为

url(r'companies/(?P<comp_id>.+)/buy/?$',views.buy) 

现在在views.buy功能,

print comp_id 

给我id1/buy。所以,它将整个剩余的URL作为comp_id变量。我该如何阻止它?

company.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> 

+0

这是不可能的;你必须有一个像'company/id1/buy/buy'这样的URL才能实现。 –

+0

在任何情况下,您都可以匹配'[^ /] +'来匹配任何不是*斜杠而不是'。+'的字符。 –

+0

@MartijnPieters:'(?P [^ /] +)'不起作用 –

回答

0

如果comp_idid1,这会做的伎俩。

url(r'companies/(?P<pdf>\w+)/buy/?$',views.buy) 
+0

我也可能在id中有'_'。例如)id_1 –

+0

@AswinMurugesh:没问题。 '\ w'匹配字母数字字符,包括“_”,与[A-Za-z0-9_]相同 – RMotitsuki

1
url(r'companies/(?P<comp_id>.+?)/buy(/|)$', views.buy)