2011-06-06 26 views
1

我有一個urlconf設置來捕獲/ account/invoices/* /,並且我想要捕獲一些可選限定符。在這種情況下:無償,有償,無視。我不輸出這個,所以我認爲接受這種方式的輸入應該沒問題,但我仍然需要將這些選項列入白名單並將其轉換爲API預期的內容。有沒有更好的方法來做到這一點(變量「付費」作爲觀點的參數)?將給定的字符串限制在白名單中的最佳方法

filter['unpaid'] = 0 
filter['paid'] = 1 
filter['disregarded'] = 2 

if paid is in filter: 
    paid = filter[paid] 
+1

不確定你希望改善哪一部分,並且不確定你認爲「更好」。 if語句可以用'paid = filter.get(付費,付費)'代替,假設'filter'是一個字典。 – 2011-06-06 16:35:01

+0

filter.get看起來不錯。我是python的新手,所以我總是試圖獲得我的代碼的反饋。 PHP中有很多語法細節並不是我想要利用的。 – sophistihip 2011-06-06 16:42:28

+3

以及命名「過濾器」不是一個好主意。它可能與內置濾波器功能相沖突。 – utdemir 2011-06-06 17:03:34

回答

0

是的,你的解決方案是好的。但我只是喜歡dict.get多一點:

enum = { 
     'unpaid'  : 0, 
     'paid'  : 1, 
     'disregarded' : 2, 
     } 


def view(request, option): 

    value = enum.get(option, None) 
1

簡單的解決方案:

if paid in ['unpaid', 'paid', 'disregarded'] 

您的解決方案和DataGreed的更詳細,並要求你補值的字典/對象元素。

相關問題