Python generic.Listview不显示在DRF查看器的URL列表中
我错过了一些东西,但我不知道是什么。当我转到DRF查看器时,可能的URL列表中没有列出警报。其他所有Rest URL都可以 这是我的serializer.py: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
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 errorSimplerouter.register(r'options',api.OptionViewSet',alerts')
应该可以正常工作吗?嗨,丹尼尔,你能详细说明一下吗?我可以将我的选项ViewSet设置为ViewSet,以便DefaultRouter和其他类似DRF Docs的东西能够识别它吗?如果是这样,怎么做?@arcee123当然,我已经扩展了我的答案,我想我接下来要学习mixin。多谢。让我今天下午回到服务器,试一试。谢谢你,丹尼尔!