7
django-rest-frameworkのModelViewSetにカスタムURLを追加する際に問題が発生しました。ここでModelViewSetのdjango-restカスタムURL
router = routers.DefaultRouter()
router.register(r'post', PostViewSet)
urlpatterns = patterns('',
url(r'^api/', include(router.urls)),
)
私modelviewsetは、私は、設定された日に取得しているよ
/api/post/
のようなURLのために素晴らしい作品
class PostViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = Post.objects.all()
serializer_class = PostSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly, IsOwnerOrReadOnly,)
search_fields = ('created')
def pre_save(self, obj):
obj.user = self.request.user
#
# based on the post type this will decide which serializer to use for the data
def get_serializer_class(self):
#
# default is the Text role serializer
return PostSerializer
のように見える私の主なurls.pyの例ですlike
/api/post/yyyy/mm/dd/
post_list = PostViewSet.as_view({'get': 'list'})
は、その後、あなたが通常と同じように、あなたの日付ベースのルックアップURLにこれをマッピングし、年、月のパラメータを設定すると:ちょうど別のビューとしてリスト方式を引き出し
/api/post/?year=&month=&day=
この回答は私にトンを助けました!あなたがそれを投稿してからしばらく時間がかかっていることは分かっていますが、ルータにビューを個別に登録することが可能かどうかは分かりますか? – dkhaupt
@dkhauptここではルーティングのための追加のアクションをマークすることができます:http://www.django-rest-framework.org/api-guide/viewsets/#marking-extra-actions-for-routing - わかりませんそれはあなたに必要なものを与えます。最終的には、ブラウズ可能なAPIのテンプレートをオーバーライドし、必要なリンクを追加する必要があります。 (ビュー自体は他のものと同様にレンダリングできます)。 –