簡體   English   中英

根據URL過濾(REST框架)

[英]Filtering against the URL (REST framework)

我想從url中傳遞數據。 我讀了這篇,然后嘗試寫! 但我有一個錯誤:

__init__() takes 1 positional argument but 2 were given

serializer.py:

class ContactsDetailsSerializer(serializers.ModelSerializer):


    class Meta:
        model = Contacts
        fields = ('id', 'profile_id', 'tel','email')

views.py:

class ContactsDetailsViewSet(viewsets.ViewSet):

    def list(self, request ):
        queryset = Contacts.objects.all()
        serializer = ContactsSerializer(queryset, many=True)
        return Response(serializer.data)

urls.py:

  router = routers.DefaultRouter()
    router.register(r'profiles', views.ProfileViewSet)
    # router.register(r'users', views.UserViewSet)
    router.register(r'members', views.MemberViewSet)
    router.register(r'files', views.FilesViewSet)
    router.register(r'contacts', views.ContactsViewSet)
    router.register(r'products', views.ProductsViewSet)
    router.register(r'stories', views.StoriesViewSet)

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^accounts/', include('allauth.urls')),
        url(r'^', include(router.urls)),
         url(r'^test', ContactsDetailsViewSet.as_view({'get': 'list'})),//here
        url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
    ]

有人可以幫忙嗎? 如何通過REST框架傳遞數據?

url('^test/(?P<profile_id>.+)$', views.ContactsDetailsViewSet),

您需要使用映射調用as_view() 這不是常規視圖,而是ViewSet

url('^test/(?P<profile_id>.+)$', views.ContactsDetailsViewSet).as_view({'get': 'retrieve'})),

還要注意,您需要將profile_id指定為lookup_url_kwarg

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM