Django регулярное выражение urlpatterns является неточным, получая 404? - PullRequest
2 голосов
/ 23 июня 2019

Я работаю над URL-адресами API Django и пытаюсь распознать HTTP-запрос этого типа:
DELETE http://localhost:8000/api/unassigned_events/dddd-dd-dd/d or dd/ - d для цифры, сохраняя каждый сектор в качестве аргумента.
например DELETE http://localhost:8000/api/unassigned_events/2019-06-20/1/

Мое выражение пути регулярного выражения:
path(r'^api/unassigned_events/(?P<date>[0-9]{4}-[0-9]{2}-[0-9]{2})/(?P<cls_id>[0-9]{1,2})/$', UnassignedClassRequests.as_view(), name='delete')

HTTP-запрос приведен выше, но я получаю ошибку 404 вместо функциональности представления.

Вот так называемый метод представления:

class UnassignedClassRequests(APIView):  

@staticmethod                                                                         
def delete(request):                                                                                                
UnassignedEvents.objects.filter(date=request.date, cls_id=request.cls_id).delete()
return HttpResponse(status=status.HTTP_201_CREATED)  

и ошибка, которую я получаю в Chrome:
УДАЛИТЬ http://localhost:8000/api/unassigned_events/2019-06-20/1/ 404 (не найдено).

Я также пробовал это выражение регулярного выражения для пути, но не удалось:

path(r'^api/unassigned_events/(?P<year>[0-9]{4})-(?P<month>[0-9]{2})-(?P<day>[0-9]{2})/(?P<cls_id>[0-9]{1,2})/$' UnassignedClassRequests.as_view(), name='delete')

Что я делаю не так?

1 Ответ

2 голосов
/ 23 июня 2019

Django's path(..) [Django-doc] не не использует синтаксис регулярного выражения. Для этого вы можете использовать re_path(..) [Django-doc] :

from django.urls import <b>re_path</b>

urlpatterns = [
    <b>re_path</b>(r'^api/unassigned_events/(?P<date>[0-9]{4}-[0-9]{2}-[0-9]{2})/(?P<cls_id>[0-9]{1,2})/$', UnassignedClassRequests.as_view(), name='delete'),
    # ...
]
...