如何在django中跳过空的get参数

时间:2017-08-03 11:28:05

标签: django

我有www.example.com/search?param1=abc&param2=xyz&param3=之类的网址,目前我在视图中所做的就是这样。

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参数。

4 个答案:

答案 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]}