【发布时间】:2015-08-04 09:53:44
【问题描述】:
我阅读了 django 中的视图集,但还没有完全理解所有内容..
例如在 django 中使用视图集时 -
class SnippetViewSet(viewsets.ModelViewSet):
"""
This viewset automatically provides `list`, `create`, `retrieve`,
`update` and `destroy` actions.
Additionally we also provide an extra `highlight` action.
"""
queryset = Snippet.objects.all()
serializer_class = SnippetSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,
IsOwnerOrReadOnly,)
@detail_route(renderer_classes=[renderers.StaticHTMLRenderer])
def highlight(self, request, *args, **kwargs):
snippet = self.get_object()
return Response(snippet.highlighted)
而路由是这样的
router = DefaultRouter()
router.register(r'snippets', views.SnippetViewSet)
在视图中的 cmets 中,他们说 -“此视图集自动提供 list、create、retrieve、update 和 destroy 操作。”
编辑:::
@detail_route(methods=['post'])
def register(request):
serializer = UserSerializer(data=request.DATA)
if serializer.is_valid():
user = User.objects.create_user(
username = serializer.init_data['username'],
password = serializer.init_data['password'],
)
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
- 如何访问这些方法中的每一种?以及如何访问 highlight 方法?
- 在路由器中注册的url是/sn-ps。我做 sn-ps/create 吗?还是sn-ps/删除?
- ModelViewSet 实际上对 url 结构做了什么?
【问题讨论】:
标签: python routing views django-rest-framework