django:在基于Classed的视图中使用相同的url但不同的动词

时间:2016-07-07 21:00:59

标签: python django django-rest-framework

将urls.py写成以下内容是否合适:

urlpatterns = [
    url(r'^v1/files/$', FileView.as_view(), name='api-upload'),
    url(r'^v1/files/(?P<pk>\d+)$', FileView.as_view(), name='api-delete'),
    url(r'^v1/files/$', FileView.as_view(), name='api-view-all'),
    url(r'^v1/files/(?P<pk>\d+)$', FileView.as_view(), name='api-view-one'),
]

第二个和第四个几乎相同。但一个是DELETE,另一个是GET。

有任何改善建议吗?谢谢。是否可以通过django.core.urlresolvers反转URL?就像下面的

一样

'deleteUrl': reverse('upload-delete', args=[instance.pk]),

1 个答案:

答案 0 :(得分:0)

您不需要编写网址,只需在视图中定义两个方法:

# views.py

class FileView(...):

    def get(self, request, *args, **kwargs):
        # This method will catch the GET call

    def delete(self, request, *args, **kwargs):
        # This method will catch the DELETE call

有了这个,你只需要一个url配置:

url(r'^v1/files/(?P<pk>\d+)$', FileView.as_view(), name='api-file')