2017-10-13 71 views
1

我在urls.py一個網址:總會有一個更`/`的`的`??前,當我請求URL

urlpatterns = [ 
    ... 
    url(r'^delete_server_snapshot??(?P<snapshot_server_id>\[0-9a-z\-]+)/', app_admin_views.delete_server_snapshot), # here 
    ... 

當我提出要求,有模板:

<td><a href="/app_admin/delete_server_snapshot??{{ snapshot_server.id }}/" type="button" class="btn-de">Delete</a></td> 

但是當我點擊<a>標籤,總會有錯誤,總會有一個更/??前:

enter image description here

請求URL:

Request URL: http://localhost:8001/app_admin/delete_server_snapshot/??70e6e179-6269-445c-bd6a-cd98e55b1bdb/ 
+0

爲什麼在正則表達式中使用'\ [''?通過轉義'['你*'禁用字符類*。這並不意味着你的想法。 –

+0

@MartijnPieters如何使用它?我試過[0-9a-z \ - ] +仍然不適合我。 – 244boy

+0

我懷疑'??'是在某種程度上混淆了urlpattern反向器。爲什麼你首先在URL中有'??'?這似乎是一個令人驚訝的增加。 –

回答

2

不要把問號在你的URL模式,句號。該網址的?<query string>部分爲從不使用的網址格式;任何查詢參數都可以通過請求對象訪問,而不能用於匹配URL。

What the URLconf searches against section

的URL配置針對搜索請求的URL,作爲一個正常的Python字符串。這不包括GET或POST參數或域名。

GET參數來自查詢字符串,後面的所有內容都以逗號分隔?

如果你想snapshot_server_id標識符是URL的一部分匹配,完全消除問號:

url(r'^delete_server_snapshot(?P<snapshot_server_id>[0-9a-z\-]+)/', app_admin_views.delete_server_snapshot) 

您可以使用/作爲分隔符,如果你需要snapshot和UUID之間的一個,或任何其他valid URL path character

?字符告訴Django您的URL路徑在該位置結束,並且/插入在生成的URL的路徑末尾。

+0

謝謝,我用'_'替換'''也適用於我,你的回答讓我知道Django urlpatterns中的'?'字符函數。 – 244boy

相關問題