对于具有基数10的int(),django无效的文字:','

时间:2017-06-24 16:24:28

标签: django

我想传递这样的网址:

/view/people/?roles=1,2

其中1,2是由javascript函数构成的。在我看来,我有这个:

roles=request.GET.get('roles',None)
if roles:
    roles=list(roles)
    if type(roles) is list:
        filter_options['role__in']=roles

我得到了上述错误。如果我将角色硬编码为:

   filter_options['role__in']=[1,2,3]

1 个答案:

答案 0 :(得分:0)

这里的问题是<svg xmlns="http://www.w3.org/2000/svg"> <circle cx="40" cy="40" r="40" fill="#472e12" /> <text x="40" y="40" fill="#FFF" font-size="20px" text-anchor="middle" > 1 line </text> <text x="40" y="60" fill="#FFF" font-size="20px" text-anchor="middle"> 2 line </text> </svg>返回字符串request.GET.get('roles', None)。由于字符串是可迭代的,因此当您对它们进行迭代(例如'1,2')或使用for foo in '1,2'从它们生成列表时,您不会收到错误。但在这两种情况下,迭代都在字符串中的字符上。

如果你小心只接受以逗号分隔的整数(例如你的URL模式),你可以通过list() split()上的字符串手动处理这个并将每个元素转换为整数,例如

','

请注意,我们假设roles = request.GET.get('roles', None) if roles: roles = [int(role) for role in roles.split(',')] filter_options['role__in'] = roles 可以在这里工作,这就是网址模式如此重要的原因。