2012-03-03 80 views
3

我刚刚开始使用django-rest-framework。 对此很有兴趣,除了事实上只有很少的例子可用。 让api工作变得很好,但所有额外的东西都是一个难题。 (增加额外的自定义字段等)django-rest-framework将allowed_methods限制为GET

现在我想知道如何限制allowed_methods例如ListView或DetailView。 在views.py中添加这类像我读的地方作为一个答案......似乎没有任何效果:

allowed_methods = ('GET',) 

回答

1

Django的REST的框架实际上有非常多的例子..

看看http://django-rest-framework.orghttp://django-rest-framework.org/contents.htmlhttp://rest.ep.io/一些好的例子和文档。

如果您自己设计了一个REST函数,而不是使用任何django-rest-framework魔法(如rest.ep.io)为您生成它,则应该查看mixin(http:// django -rest-framework.org/howto/mixin.html)。

如果您想限制为仅获取方法。只需使用def get(...)和mixin类。从链接

实例提供:

curl -X GET http://rest.ep.io/mixin/ 

urls.py

from djangorestframework.compat import View 
from djangorestframework.mixins import ResponseMixin 
from djangorestframework.renderers import DEFAULT_RENDERERS 
from djangorestframework.response import Response 

from django.conf.urls.defaults import patterns, url 
from django.core.urlresolvers import reverse 


class ExampleView(ResponseMixin, View): 
    renderers = DEFAULT_RENDERERS 

    def get(self, request): 
     response = Response(200, {'description': 'Some example content', 
            'url': reverse('mixin-view')}) 
     return self.render(response) 


urlpatterns = patterns('', 
    url(r'^$', ExampleView.as_view(), name='mixin-view'), 
) 
+0

好的,这可以用于更复杂的新视图,我正在寻找的答案,我刚刚发现了myselve。 – 2012-03-03 21:22:45

+0

啊,我错过了rest.ep.io这是一个非常有用的链接! (对不起,对很多深夜工作我猜) – 2012-03-03 21:30:33

+0

顺便说一句,我原来的问题的答案是在我添加myselve的答案,但是,这是有用的不接受作为答案,所以谢谢! – 2012-03-03 21:31:51

2

由于几乎一切都在Django的休息框架,一旦你找到它,它很简单。 在网址代替使用ListOrCreateModelView我不得不使用ListModelView。

30

如果您正在使用ModelViewSet,仍然要限制一些方法你可以添加http_method_names

例子:

class SomeModelViewSet(viewsets.ModelViewSet): 
    queryset = SomeModel.objects.all() 
    serializer_class = SomeModelSerializer 
    http_method_names = ['get', 'post', 'head'] 

一旦你这样做,getposthead将被允许。但是putpatchdelete将不会被允许。

+1

我喜欢这种方法,它似乎更简单,但你必须重复自己的每个视图集。也许还有另一种方法可以一次完成所有的视图集。你知不知道怎么? – ePascoal 2015-07-23 10:29:18

+0

我同意。例如,我期望有一些像AllowAllMethods等同于AllowAny权限的常量。 – timmwagener 2016-08-31 08:01:04