2011-06-15 54 views
20

我無法找到正確的語法來做我想做的事情。如果名稱/值對不存在,我想做點什麼。這裏是我認爲的代碼:如何在發佈數據時檢查名稱/值對是否存在?

if (!request.POST['number']): 
    # do something 

什麼是正確的方式來完成類似上面的東西?當我嘗試這個時遇到語法錯誤。

+1

假設你是Python的新手,而不僅僅是Django。首先,Django中的'request.POST'就像一個普通的Python *字典*。所以你需要找出*什麼是正確的語法來測試字典中鍵的存在*。一旦你知道了,你可以谷歌正確的事情,並找到了很多已經問StackOverflow非常類似的問題(例如,http://stackoverflow.com/questions/1602934/what-is-a-good-方法對測試-IF-一個琴鍵存在 - 在 - python的詞典)。 – Tony 2011-06-15 18:43:22

回答

16

大多數邏輯:

if not 'number' in request.POST: 

Python的約定:

if 'number' not in request.POST: 

以完全相同的方式裏工作。

30

@Thomas爲您提供了通用的方法,但是當某個鍵不存在時,獲取默認值的具體情況有一個快捷方式。

number = request.POST.get('number', 0) 

這相當於:

if 'number' not in request.POST: 
    number = 0 
else: 
    number = request.POST['number'] 
2

我用過很多次,在我視圖如下:

def some_view(request): 

    foobar = False 

    if request.GET.get('foobar'): 
     foobar = True 

    return render(request, 'some_template.html',{ 
     'foobar': foobar, 
    }) 

然後,在我的模板我可以使用以下URL語法來設置foobar

<a href="{% url 'view_name_in_urls' %}?foobar=True">Link Name</a> 

而且,由於我們從上面的視圖返回foobar變量,我們可以使用在模板與其它邏輯塊(偉大的導航!):

<li class="nav-item"> 
    {% if foobar %} 
     <a class="nav-link active" .... 
    {% else %} 
     <a class="nav-link" .... 
    {% endif %} 
</li> 

希望它幫助,