使用python和django的ValueError

时间:2013-08-20 21:03:12

标签: python django django-templates

我确信在我的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 }} 

一段代码。

现在我只是试图让表单在我的网站上显示,而不是让它做某事!

如果此说明完整,请告诉我,不要在此处发布问题! 谢谢!

1 个答案:

答案 0 :(得分:2)

choicesChoiceField的论点不正确。

根据the documentation

  

choices

     

2-tuples 可迭代(例如,列表或元组)用作   这个领域的选择。此参数接受与。相同的格式   选择模型字段的参数。请参阅模型字段参考   有关更多细节的选择文档。

在您的情况下,您只有一个元素。你至少需要:

choices=[('a_code', 'A Pretty Display Value')]

心灵:

  • 清单
  • 元组中的两个元素

当然,只有一个选择的ChoiceField并不是真正的选择。您可能需要考虑:

[
    ('a_code', u'A Pretty Display Value'), 
    ('another_code', 'Another pretty display value')
]