【发布时间】:2022-02-08 02:58:15
【问题描述】:
我正在使用 Django Rest Framework (DRF) 构建一个简单的相册应用程序。每个专辑的模型中都有一个 UUID 字段。我想创建“共享链接”,以便拥有/albums/[uuid] 形式链接的人能够访问该相册。
我使用ModelViewSet 来表达我的观点,所以我认为实现这种所需路由的最简洁的方法是通过action 装饰器,带有/albums/shared/[uuid] 之类的网址,但我不清楚如何获得action-decorated shared 方法中的 uuid。我什至无法解析 URL,因为在触发此 shared 方法之前,DRF 将 404:
### views/album.py
class AlbumViewSet(viewsets.ModelViewSet):
queryset = Album.objects.all()
serializer_class = AlbumSerializer
@action(detail=False, methods=['get'])
def shared(self, request):
# How do you get the uuid from the supplied URL?
uuid = ???
obj = self.get_queryset().objects.get(uuid=uuid)
return Response([obj])
希望我不必向urls.py 添加任何花哨的模式,但如果我这样做了,那么这就是我目前所拥有的:
### myapp/urls.py
router = routers.DefaultRouter()
router.register(r'albums', AlbumViewSet)
...
urlpatterns = [
# ...
path('', include(router.urls)),
]
format_suffix_patterns(urlpatterns)
谢谢!
【问题讨论】:
标签: django django-rest-framework