- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法让@detail_route 正常工作。
我有两个 API 调用要处理:
/movie/
/movie/highlight
我正在尝试使用 @detail_route 来获取 View 集中的/movie/highlight url。
我的 urls.py 看起来像这样:
from django.conf.urls import url, include
from rest_framework import routers
from api import views
router = routers.DefaultRouter()
router.register(r'users', views.UsersViewSet)
router.register(r'groups', views.GroupViewSet)
router.register(r'movie', views.MovieViewSet)
我的 views.py 看起来像这样:
rom django.contrib.auth.models import User, Group
from movies.models import Movie
from api.serializers import UserSerializer, GroupSerializer, MovieSerializer
from rest_framework.response import Response
from rest_framework import permissions
from rest_framework import renderers
from rest_framework import viewsets
from rest_framework.decorators import detail_route
# Code from DRF quickstart tutorial
class UsersViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer
# Code from DRF quickstart tutorial
class GroupViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows groups to be viewed or edited.
"""
queryset = Group.objects.all()
serializer_class = GroupSerializer
# MY CODE
class MovieViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows groups to be viewed or edited.
"""
queryset = Movie.objects.all().order_by('-title')
serializer_class = MovieSerializer
@detail_route(renderer_classes=(renderers.StaticHTMLRenderer,))
def highlight(self, request, *args, **kwargs):
snippet = "Highlight"
return Response(snippet)
serializers.py 看起来像这样:
from django.contrib.auth.models import User, Group
from movies.models import *
from rest_framework import serializers
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', 'groups')
class GroupSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Group
fields = ('url', 'name')
# My code...
class MovieSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Movie
fields = ('title', 'details')
如果我尝试/movie/url API 调用,它会按预期工作。如果我尝试/movie/highlight/调用,我会收到 404 错误。
我是 DRF 的新手,所以怀疑我在这里做了一些非常愚蠢的事情,但无法从我扫描的各种文档和教程中找到什么。
最佳答案
您需要使用@list_route
装饰器而不是@detail_route
装饰器。
这将生成 url movie/highlight/
。
使用@list_route
修饰的方法生成{prefix}/{methodname}/
类型的url,而detail_route
修饰的方法生成类型的url {前缀}/{查找}/{方法名}/
。这里 methodname
是您的方法的名称,lookup
是执行查找以获取详细 View 对象的查找值。
class MovieViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows groups to be viewed or edited.
"""
queryset = Movie.objects.all().order_by('-title')
serializer_class = MovieSerializer
# use list_route decorator
@list_route(renderer_classes=(renderers.StaticHTMLRenderer,))
def highlight(self, request, *args, **kwargs):
snippet = "Highlight"
return Response(snippet)
关于python - Django REST Framework @detail_route 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32568484/
在 Django Rest Framework 中,如何将我的 HyperlinkedIdentityfield 指向 ViewSet 中定义的 @detail_route? 例如,也许我有 api/
我有以下路线: @detail_route(methods=['post'], permission_classes=[IsOperator], schema=AutoSchema(manual_fi
我在我的viewsets.ModelViewSet 上使用@detail_route。 class CompanyViewSet(viewsets.ModelViewSet): queryse
在 rest 框架中存在一些方法可以在 @detail_route View 中使用 session 用户代替 pk 和 self.get_object()? 我想使用 request.user 并且
美好的一天! 我有一个像这样的 detail_route View : class PostView(viewsets.ModelViewSet): queryset = Post.objec
我可以使用@detail_router 的分页吗? class GroupViewSet(viewsets.ReadOnlyModelViewSet): """ Group View
我无法让@detail_route 正常工作。 我有两个 API 调用要处理: /movie/ /movie/highlight 我正在尝试使用 @detail_route 来获取 View 集中的/
我正在尝试运行 longclaw,但出现错误 $ python manage.py makemigrations catalog home Traceback (most recent call la
我有一个 DRF View 集,想提供详细信息并列出具有相同名称的路由: class MyViewSet(ViewSet): # ... @detail_route(['post'])
考虑简单 View : class SomeView(viewsets.GenericViewSet, viewsets.mixins.ListModelMixin,
我有一个类似ViewSet的 class CustomerViewSet(ModelViewSet): queryset = models.Customer.objects.all()
我有一个使用 Django Rest Framework 构建的 API。里面有一个 ViewSet 和 detail_route 我正在尝试处理嵌套数据: from rest_framework.m
我正在使用 Django-rest-framework==3.3.2和 Django==1.8.8 .我有一个简单的 GenericView from rest_framework import ge
我正在尝试通过 @list_route 和 @detail_route 装饰器使用嵌套路由。路线有效并返回数据,但我必须在地址栏中手动导航到它们。它们不会出现在可浏览 API 中的 DefaultRo
在我的代码中,我有一个用户 View 集。我想要的是只允许读取操作(/users/42 和 /users/),ReadOnlyModelViewSet 做得很好。 此外,我想要一个/users/reg
这是我的 View 集: class PostViewSet(viewsets.ModelViewSet): serializer_class = PostSerializer per
在这里:http://www.django-rest-framework.org/api-guide/routers/#extra-link-and-actions detail_route给出的例子
我是一名优秀的程序员,十分优秀!