假设在我看来,我有一个字符串列表,我将其作为上下文变量发送到模板。然后在该模板中,有一个提交的表单。该表单上的一个字段是隐藏字段,并设置为与上下文中的此列表相等。回到我的视图中,当我从请求的POST对象中读取此列表时,列表似乎已将原始列表中的所有字符分开,并将每个字符设置为其自己的元素。
例如,如果我的原始列表是['alpha','beta'],那么通过请求的POST对象从我的模板返回的列表显示为['a','l','p','h ','a','b','e','t','a']。
1)为什么会这样?
2)我如何保留原始格式?
以下是我的模板中的相关代码:
<form method="post">
<input type="hidden" name="class_names" value="{{ class_names }}"/>
<input type="submit" value="Submit" />
</form>
其中class_names
是在视图中作为上下文变量传递的列表:
class_names = ['alpha', 'beta']
context = {'class_names': class_names}
return render(request, 'teacher/query.html', context)
然后在视图中从请求中提取此列表时:
class_names = request.POST['class_names']
for x in _class_names:
print x
它打印出每个单独的字符,而不是列表中的每个单词。
答案 0 :(得分:1)
你可以这样试试: 视图:
更新:你可以使用两个这样的变量:
class_names_for_radio = ['alpha', 'beta']
class_names = ','.join(class_names_for_radio)
context = {'class_names': class_names,
'class_names_for_radio': class_names_for_radio}
return render(request, 'teacher/query.html', context)
模板:
<form method="post">
<input type="hidden" name="class_names" value="{{ class_names }}"/>
<input type="submit" value="Submit" />
</form>
收到值时:
class_names = request.POST['class_names'].split(',') #unsafe, just a demo
for x in _class_names:
print x