2017-05-03 73 views
1

我得到錯誤無效的文​​字爲int()與基數10:'1,303',它顯示錯誤的吹碼。舊的數據工作正常,只是我添加到數據庫中的新東西。有任何想法嗎?int()與基數爲10的無效文字:'1,303'

def get(self, request, *args, **kwargs): 
    cart = self.get_object() 
    item_id = request.GET.get("item") 
    delete_item = request.GET.get("delete", False) 
    flash_message = "" 
    item_added = False 
    if item_id: 
        item_instance = get_object_or_404(Variation, id=item_id) ... 
     qty = request.GET.get("qty", 1) 
     try: 
      if int(qty) < 1: 
       delete_item = True 
     except: 
      raise Http404 
+0

這裏的逗號用作小數點嗎?如果有小數點,你希望做什麼? – Sayse

+0

相關:[如何使用Python將字符串轉換爲數字(如果它以千位分隔符作爲逗號)?(http://stackoverflow.com/q/1779288/1324033),但使用django表單。 – Sayse

回答

0

這就是爲什麼你應該使用Django的形式,而不是提取數據直接關閉request.GETrequest.POST。 Django表單爲您提供數據驗證,幫助您避免這種情況。問題在於你所謂的額外','。

int('1,303') 

會產生上面的錯誤。以下將不會:

int('1,303'.replace(',','')) 

所以,明顯的補救措施是通過你的int通過這樣一個過濾器。

item_instance = get_object_or_404(Variation, id=int(item_id.replace(',','')) 
+0

在歐洲國家,'''用來代替'.'作爲小數點,所以這可能不會達到相同的結果 – Sayse

+1

好點@sayse更有理由使用django表單 – e4c5

相關問題