我确信在我的django / python代码中是一个非常简单的错误。基本上我正在尝试(现在)简单地制作一个具有一些下拉列表和文件上传功能的html表单。我有以下代码片段:
views.py:
def convert(request):
if request.POST:
form = ConvertForm(request.POST,request.FILES)
if form.is_valid():
form.save()
# Change this to some result page,
# but for now, just see that we got the file
return HttpResponseRedirect('/convert/convert')
else:
form = ConvertForm()
args = {}
args.update(csrf(request))
args['form']=form
return render_to_response('convert.html',args)
在convert.html中:
{% block content %}
<form action="/convert/convert/" method="post" enctype="multipart/form-data">{% csrf_token %}
<ul>
{{ form.as_ul }}
</ul>
<input type="submit" name="submit" value="Convert">
</form>
{% endblock %}
和我的forms.py:
from django import forms
class ConvertForm(forms.Form):
ff_from = forms.ChoiceField(choices=('a'))
ff_to = forms.ChoiceField(choices=('b'))
file = forms.FileField(max_length=200)
我得到的错误如下:
/ convert / convert /
的ValueError
需要超过1个值才能打开包装
请求方法:GET
Django版本:1.5.2
异常类型:ValueError
例外价值:
需要多于1个值才能解压
模板渲染期间出错 在模板/path/to/templates/convert.html中,第16行的错误
但我不明白为什么。我是django的新手,但有点习惯蟒蛇。 convert.html中的第16行是具有
的行{{ form.as_ul }}
一段代码。
现在我只是试图让表单在我的网站上显示,而不是让它做某事!
如果此说明完整,请告诉我,不要在此处发布问题! 谢谢!
答案 0 :(得分:2)
choices
中ChoiceField
的论点不正确。
choices
2-tuples 的可迭代(例如,列表或元组)用作 这个领域的选择。此参数接受与。相同的格式 选择模型字段的参数。请参阅模型字段参考 有关更多细节的选择文档。
在您的情况下,您只有一个元素。你至少需要:
choices=[('a_code', 'A Pretty Display Value')]
心灵:
当然,只有一个选择的ChoiceField
并不是真正的选择。您可能需要考虑:
[
('a_code', u'A Pretty Display Value'),
('another_code', 'Another pretty display value')
]