如何在 Django 中定义可选的查询参数?
Posted
技术标签:
【中文标题】如何在 Django 中定义可选的查询参数?【英文标题】:How to define optional query parameters in Django? 【发布时间】:2021-06-08 07:44:38 【问题描述】:这里我有一个端点来接收多个查询参数,即first_name
、last_name
。 location
我需要端点能够处理以下场景
我找到了this,但在提供一个查询参数时我仍然得到404
,只有在给定所有参数时才有效。
urls.py
re_path(r'^project_config/(?P<product>\w+|)/(?P<project_id>\w+|)/(?P<project_name>\w+|)/$',
views.results, name='config')
然后查看
def results(request, product, project_id, project_name):
response = "You're looking at the results of question %s."
print(product)
print(project_name)
return HttpResponse(response % project_id)
如何让url接受可选的查询参数?
【问题讨论】:
使用 GET 参数而不是将它们放在 url 中不是更好吗? 这会帮助你***.com/a/14351174/5600452 如果参数的数量是动态的,那么使用 querystring 通常会更好。 参数不是完全动态的,是三个的组合 谢谢.....所有 【参考方案1】:正如 cmets 中提到的,使用查询参数试试这个
网址
re_path(r'^project_config/',views.results, name='config')
# http://127.0.0.1:8000/project_config/?product=1&project_id=2&project_name=foo
观看次数
def results(request):
queryprms = request.GET
product = queryprms.get('product')
project_id = queryprms.get('project_id')
project_name = queryprms.get('project_name')
response = "You're looking at the results of question %s."
# set your combination
if product and project_id and project_name:
# do some thing
if product and project_id:
# do some thing
# so on
return HttpResponse(response % project_id)
【讨论】:
以上是关于如何在 Django 中定义可选的查询参数?的主要内容,如果未能解决你的问题,请参考以下文章
如何使 django 中的 FileField 成为可选的?
如何使 django 中的 FileField 成为可选的?