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