我在urls.py中有一个网址:
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>
标记时出现错误,/
前面会出现??
个更多:
请求网址:
Request URL: http://localhost:8001/app_admin/delete_server_snapshot/??70e6e179-6269-445c-bd6a-cd98e55b1bdb/
答案 0 :(得分:2)
不要在您的网址格式中添加问号,完全停止。 URL的?<query string>
部分在网址格式中从不使用;任何查询参数都可以通过请求对象访问,不能用于匹配URL。
来自What the URLconf searches against section:
URLconf搜索请求的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)
如果您需要/
与UUID或任何其他valid URL path character之间的分隔符,则可以使用snapshot
作为分隔符。
?
字符告诉Django您的网址路径在该位置结束,并在生成的网址路径的末尾插入/
。