int()的基数为10的无效文字:'1,303'

时间:2017-05-03 11:00:24

标签: django

对于带有基数为10的int(),我得到错误无效的文​​字:'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

1 个答案:

答案 0 :(得分:1)

这就是您应该使用django表单而不是直接从request.GETrequest.POST提取数据的原因。 Django表单为您提供数据验证,帮助您避免此类事情。问题是额外的&#39;&#39;在你想要的int。

int('1,303')

会产生上述错误。以下不会:

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

因此,明显的补救措施是通过这样的过滤器传递你的int。

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