2016-10-04 1 views
0

Привет всем Я использую базу отдыха Django для создания APIправильный путь, чтобы получить остальную часть параметров URL в рамках отдыха Django

В моем файле 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'})), 

Эта работа отлично, и я это URL-адрес

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.

Правильно ли это, чтобы получить остальные параметры URL-адреса в системе Django rest?

ответ

1

У вас есть весь путь URL-адреса, завернутый в это же имя с именем regex. Вместо этого вы можете отделить заднюю часть, поместив его в другой группе:

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') 
     ...