Django 我想用http://xxxxxx/{id}和http://xxxxxx/{md5}一起
我想使用{id}和{md5} 我认为它是这样工作的Django 我想用http://xxxxxx/{id}和http://xxxxxx/{md5}一起,django,django-rest-framework,Django,Django Rest Framework,我想使用{id}和{md5} 我认为它是这样工作的 class ItemViewSEt(viewsets.ModelVieSet): queryset = item.objects.all() serializer_class = ItemSerializer permission_classes = [AllowAny] lookup_field = 'id' @detail_route(methods=['GET'], permission_clas
class ItemViewSEt(viewsets.ModelVieSet):
queryset = item.objects.all()
serializer_class = ItemSerializer
permission_classes = [AllowAny]
lookup_field = 'id'
@detail_route(methods=['GET'], permission_classes=[AllowAny])
def test(self, request):
self.lookup_field = 'md5'
但它不适用于以下错误
check()获得意外的关键字参数“pk”
我怎样才能解决这个问题
我要分开视图集吗?或者创建方法视图并包含url?不要认为在方法中更改
查找\u字段
会起作用。
但是,您可以使用md5进行查询,并从该方法返回响应
默认情况下,detail_route
将pk
添加为可重复使用的参数
因此示例代码是
@detail_route(methods=['GET'], permission_classes=[AllowAny])
def test(self, request, pk=None):
obj = Item.objects.get(md5=pk)
ser = ItemSerializer(obj)
return Response(ser.data)
这是否会使
URLDispatcher
产生歧义?更具体地说,如何区分/test/123/
和/test/d926d7bb9ccf46fc04a61bd65d87b9b3/
?@JerinterGeorge url regex应该能够做到这一点\w+
也将匹配所有整数,对吗?那么,你能展示一些例子吗?@JerinterGeorge,我没有例子,但是你可以命令定义这些URL和它们的正则表达式来实现OP想要的。