Python:当使用param名称的格式方法时,Django没有得到参数

时间:2016-01-06 09:13:32

标签: python django string

我正在为我的项目使用Python 2.7和Django 1.6.11,我希望迭代得到一个包含这样代码的params列表:

for idx in range(1, int(number_unit_orders) + 1):
     is_edit = request.POST.get('edit_%s'.format(str(idx)))
     # Do something with is_edit

但是is_edit始终为None,尽管在请求对象中设置了edit_1等等。但下面的代码块有效(使用字符串连接):

for idx in range(1, int(number_unit_orders) + 1):
     is_edit = request.POST.get('edit_' + str(idx))
     # Do something with is_edit

不知道为什么会这样。

3 个答案:

答案 0 :(得分:3)

'edit_%s'.format(str(idx))

混合了两种不同类型的格式

你需要选择其中一个并坚持下去

'edit_%s' % str(idx)  # 'edit_%d % idx
'test_{}'.format(idx)

你没有得到的原因是因为你试图获得一个不存在的对象,它实际上正在查找edit_%s的确切字符串

答案 1 :(得分:1)

format方法中,您不能使用%,而是{}。 请使用此方法将您的行重写为:

is_edit = request.POST.get('edit_{}'.format(idx))

也不需要明确的str

答案 2 :(得分:0)

格式不是这样的。你的代码应该是:

'edit_{0}'.format(str(idx))