Django urlpatterns正则表达式不精确,得到404吗?

时间:2019-06-23 09:08:22

标签: javascript regex django url-pattern

我正在使用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')

我在做什么错了?

1 个答案:

答案 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'),
    # ...
]