0

我确信我的 django/python 代码中有一个非常简单的错误。本质上,我正在尝试(现在)简单地制作一个具有一些下拉列表和文件上传功能的 html 表单。我有以下代码片段:

视图.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 的新手,但有点习惯于 python。convert.html 中的第 16 行是具有

{{ form.as_ul }} 

一段代码。

现在我只是想让表格显示在我的网站上,而不是让它做一些事情!

让我知道这个描述是否完整,不习惯在这里发布问题!谢谢!

4

1 回答 1

2

您的论点在'schoices中不正确。ChoiceField

根据文档

choices

2 元组的可迭代(例如,列表或元组)用作该字段的选择。此参数接受与模型字段的选择参数相同的格式。有关更多详细信息,请参阅有关选项的模型字段参考文档。

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

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

头脑:

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

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

[
    ('a_code', u'A Pretty Display Value'), 
    ('another_code', 'Another pretty display value')
]
于 2013-08-20T21:07:01.280 回答