根据URL进行筛选(REST框架)



我想从视图中的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

最新更新