gpt4 book ai didi

python - 在Django Rest框架中传递几个参数

转载 作者:太空宇宙 更新时间:2023-11-03 16:05:37 24 4
gpt4 key购买 nike

我是 DjangoDjango Rest Framework 的新手,我尝试创建多个路由来从数据库获取数据。

现在在我的 urls.py 文件中我有这个

router = routers.DefaultRouter()
router.register(r'cpuProjects', cpuProjectsViewSet, base_name='cpuProjects'),

这返回这个

"cpuProjects": "http://127.0.0.1:8000/cpuProjects/"

我有可能做到这一点 http://127.0.0.1:8000/cpuProjects/ => 返回所有项目http://127.0.0.1:8000/cpuProjects/ad => 返回特定项目。

在我看来.py我有这个

class cpuProjectsViewSet(viewsets.ViewSet):
serializer_class = serializers.cpuProjectsSerializer
# lookup_field = 'project_name'
lookup_url_kwarg = 'project_name'

def list(self, request):
all_rows = connect_database()
serializer = serializers.cpuProjectsSerializer(instance=all_rows, many=True)
return Response(serializer.data)

def retrieve(self, request, project_name=None):
try:
opc = {'name_proj' : project_name }
all_rows = connect_database(opc)
except KeyError:
return Response(status=status.HTTP_404_NOT_FOUND)
except ValueError:
return Response(status=status.HTTP_400_BAD_REQUEST)
serializer = serializers.cpuProjectsSerializer(instance=all_rows, many=True)
return Response(serializer.data)

现在我希望我的网址接受类似的内容

http://127.0.0.1:8000/cpuProjects/ad/commentshttp://127.0.0.1:8000/cpuProjects/ad/ussinghttp://127.0.0.1:8000/cpuProjects/ad/process

为此,我添加了这个新网址

router.register(r'cpuProjects/([a-zA-Z0-9]+)$', cpuProjectsViewSet, base_name='cpuProjects'),

但是现在当我尝试这个

http://127.0.0.1:8000/cpuProjects/ad/ussing

我收到“找不到页面”

我知道这个URL必须调用检索函数来获取参数,那么,为什么会出现这个错误?

此 URL 不会执行与

相同的过程
http://127.0.0.1:8000/cpuProjects/ad 

提前致谢!

最佳答案

这与我们之前的 Q&A 中所做的有点相似

from rest_framework.decorators import detail_route, list_route
@detail_route(url_path='(?P<slug>[\w-]+)/(?P<what>[\w-]+)')
def get_by_name(self, request, pk=None,slug=None, what=None):
print(slug, what)

同样,您可以对 list_route 执行相同的操作

关于python - 在Django Rest框架中传递几个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39833747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com