gpt4 book ai didi

python - 具有空值的 Django 网址

转载 作者:太空宇宙 更新时间:2023-11-03 11:03:59 25 4
gpt4 key购买 nike

我有一个 Django 应用程序,我按如下方式调用 API:(api.py)

class studentList(APIView):
def get(self, request, pk, pk2, format=None):
student_detail = Student.objects.filter(last_name = pk, campus_id__name = pk2)
serialized_student_detail = studentSerializer(student_detail, many=True)
return Response(serialized_student_detail.data)

在 url 中我正在做如下事情:

url(r'^api/student/(?P<pk>.+)/(?P<pk2>.+)/$', api.studentList.as_view()),

现在的问题是我的应用程序有一个搜索 函数,它将参数pkpk2 发送到api。有时,用户可能只选择这些参数中的一个来执行搜索操作。因此,当仅选择一个参数时,url 将如下所示:

http://localhost:8000/api/student/##value of pk//

http://localhost:8000/api/student//##value of pk2/

那么我如何让查询仍然有效,我如何制作一个 url 以使其甚至接受这些作为参数?

最佳答案

使用.*(0个或更多)代替.+(至少1个或更多):

url(r'^api/student/(?P<pk>.*)/(?P<pk2>.*)/$', api.studentList.as_view()),

演示:

>>> import re
>>> pattern = re.compile('^api/student/(?P<pk>.*)/(?P<pk2>.*)/$')
>>> pattern.match('api/student/1//').groups()
('1', '')
>>> pattern.match('api/student//1/').groups()
('', '1')

请注意,现在,您应该在 View 中处理 pkpk2 的空字符串值:

class studentList(APIView):
def get(self, request, pk, pk2, format=None):
student_detail = Student.objects.all()
if pk:
student_detail = student_detail.filter(last_name=pk)
if pk2:
student_detail = student_detail.filter(campus_id__name=pk2)

serialized_student_detail = studentSerializer(student_detail, many=True)
return Response(serialized_student_detail.data)

希望这就是您想要的。

关于python - 具有空值的 Django 网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25173343/

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