Python generic.Listview不显示在DRF查看器的URL列表中

Python generic.Listview不显示在DRF查看器的URL列表中,python,django,Python,Django,我错过了一些东西,但我不知道是什么。当我转到DRF查看器时,可能的URL列表中没有列出警报。其他所有Rest URL都可以 这是我的serializer.py: class OptionSerializer(serializers.ModelSerializer): class Meta: model = Options fields = '__all__' validators = [ UniqueTogethe

我错过了一些东西,但我不知道是什么。当我转到DRF查看器时,可能的URL列表中没有列出警报。其他所有Rest URL都可以

这是我的serializer.py:

class OptionSerializer(serializers.ModelSerializer):
    class Meta:
        model = Options
        fields = '__all__'

        validators = [
            UniqueTogetherValidator(
                queryset=Options.objects.all(),
                fields=('Member', 'skey', 'Time_Period')
            )
        ]
api.py:

class OptionViewSet(generics.ListCreateAPIView):
    serializer_class = OptionSerializer

    def get_queryset(self):
        """
        This view should return a list of all the options
        for the currently authenticated user.
        """
        user = self.request.user
        return Options.objects.filter(Member=user)
和my url.py:

router = routers.DefaultRouter()
router.register(r'users', api.UserViewSet)
router.register(r'groups', api.GroupViewSet)
router.register(r'currency', api.BitCoinViewSet)
router.register(r'latest_prices', api.CurrencyLatestViewSet)
router.register(r'options', api.OptionViewSet.as_view, 'alerts')

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^api/', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))

]

为什么
警报
url不显示?谢谢。

路由器只能使用
ViewSet
s,但是您的
选项ViewSet
是一个普通的
APIView

您应该能够通过使用适当的mixin和基类来修复它:

class OptionViewSet(mixins.CreateModelMixin,
                    mixins.ListModelMixin,
                    viewsets.GenericViewSet):

    serializer_class = OptionSerializer

    def get_queryset(self):
        """
        This view should return a list of all the options
        for the currently authenticated user.
        """
        user = self.request.user
        return Options.objects.filter(Member=user)

如果您将未用于任何其他路线的
作为_视图
删除,是否有效?或者,如果像通常在URLconf中那样调用该方法:
api.OptionViewSet.as\u view()
?如果我删除
as\u view
,我会得到一个参数错误:
TypeError:as\u view()接受1个位置参数,但给出了2个位置参数。当我把它放回去的时候,错误消失了。正如我提到的,如果你调用那个方法会发生什么?如果我特别调用那个方法(比如说使用restman),它会给我一个URL 404 errorSimple
router.register(r'options',api.OptionViewSet',alerts')
应该可以正常工作吗?嗨,丹尼尔,你能详细说明一下吗?我可以将我的选项ViewSet设置为ViewSet,以便DefaultRouter和其他类似DRF Docs的东西能够识别它吗?如果是这样,怎么做?@arcee123当然,我已经扩展了我的答案,我想我接下来要学习mixin。多谢。让我今天下午回到服务器,试一试。谢谢你,丹尼尔!