我正在使用Django API URL,并尝试识别这种类型的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错误而不是视图的功能。
这是所谓的view方法:
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')
我在做什么错了?
答案 0 :(得分:2)
Django的path(..)
[Django-doc]不使用正则表达式语法。您可以为此使用re_path(..)
[Django-doc]:
from django.urls import re_path
urlpatterns = [
re_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'),
# ...
]