我有www.example.com/search?param1=abc¶m2=xyz¶m3=
之类的网址,目前我在视图中所做的就是这样。
if ((request.GET.get('param1')) or (request.GET.get('param2')) or (request.GET.get('param3'))):
if request.GET.get('param1'):
value1 = request.GET.get('param1')
if request.GET.get('title'):
value2 = request.GET.get('param2')
if request.GET.get('location'):
value3 = request.GET.get('param3')
api_url = `www.api-end-point.com?p1=value1&p2=value2&p3=value3&format=json`
但你们可以看到param3是空的,要点击api我需要跳过空参数。
所以我的问题是如何在django的GET
请求中从url获取所有set参数。
答案 0 :(得分:2)
试试这个:
# values = [request.GET.get(p) for p in ['param1', 'param2', 'param3']]
values = ['val1', 'val2', '']
names = ['p1', 'p2', 'p3']
query = 'www.api-end-point.com?'
for i, value in enumerate([v for v in values if v]):
query += "{}{}={}".format("&" if i else "", names[i], value)
query += '&format=json'
将产生:
www.api-end-point.com?p1=val1&p2=val2&format=json
答案 1 :(得分:1)
您可以尝试:
value1 = request.GET.get('param1') if request.GET.get('param1') else None
答案 2 :(得分:1)
好的,这只是让我抓狂,如果你想要一个非常脏但工作正常的解决方案检查代码:
{{1}}
不推荐用于生产,因为它根本不干净。另一个发布的for循环解决方案更加清晰!但是这个正在运行......
它是一个快速而肮脏的解决方案,但这是有效的。我尝试过这个。如果您有疑问,请发表评论:)
答案 3 :(得分:0)
params = {k: request.GET[k] for k in request.GET if request.GET[k]}