2012-03-03 77 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