2016-10-04 68 views
0
大家

嗨,我使用Django的REST框架來創建一個API正確的方式來獲得URL的Django的REST框架的其餘參數

在我URLs.py文件我有這個

url(r'^cpuProjects/$', cpuProjectsViewSet.as_view({'get': 'list'})), 
    url(r'^cpuProjects/(?P<project_name>[a-zA-Z0-9]+)$', cpuProjectsViewSet.as_view({'get': 'retrieve'})), 

這項工作很好,我有這網址

http://127.0.0.1:8000/cpuProjects/ 
http://127.0.0.1:8000/cpuProjects/ad 
在我的檢索功能

,我有這樣得到的參數

def retrieve(self, request, project_name=None): 
    try: 
     opc = self.kwargs.get(self.lookup_url_kwarg) 
     print(opc) 
     ... 

現在,我加入這個我URLs.py文件

url(r'^cpuProjects/(?P<project_name>[a-zA-Z0-9]+/[a-zA-Z0-9]+)$', cpuProjectsViewSet.as_view({'get': 'retrieve'})), 


http://127.0.0.1:8000/cpuProjects/name_project/whatever_string_here 

print(opc)在後一種情況下返回此ad/pending

這是在Django rest框架中獲取URL的其餘參數的正確方法嗎?

回答

1

你有這個URL的整個路徑封裝在這個相同的正則表達式名爲組。

url(r'^cpuProjects/(?P<project_name>[a-zA-Z0-9]+)/(?P<status>[a-zA-Z0-9]+)$', ...), 

並且在視圖:您可以通過,而不是把它在一個不同的組後分出一部分

def retrieve(self, request): 
    try: 
     opc = self.kwargs.get(self.lookup_url_kwarg) 
     status = self.kwargs.get('status') 
     ...