我对django有点新鲜.我试图在上传时选择将文件发送到另一台服务器,但form.is_valid()
总是返回false会让我输入if
views.py
-
def sent(request): if request.method == 'POST': form = SendFileForm(request.POST, request.FILES) print "form is made" print form.errors if form.is_valid(): print "form is valid" new_song = Song(songfile= request.FILES['songfile']) new_song.save() print "new song is made and saved" l = List() #cd = form.cleaned_data #SENDS THE FILE TO SERVER GIVEN PATH l.all_files(new_song.songfile.path) return HttpResponseRedirect(reverse('get_files.views.sent')) else: print "form is not valid" else: form = SendFileForm() songs = Song.objects.all() return render_to_response('sent.html', {'songs': songs,'form': form}, context_instance=RequestContext(request))
sent.html
模板-
{% if form.errors %}Please correct the error{{ form.errors|pluralize }} below.
{% endif %}
forms.py
-
class SendFileForm(forms.Form): path = forms.CharField() songfile = forms.FileField(label='Select a music file',help_text='max. 4 megabytes')
我搜索了很多论坛,但无法解决问题.先感谢您!
默认情况下(required=True
)需要表单中的每个字段.未在必填字段中提供信息的表格无效.您可以path
在模板中向表单添加字段,并且必须填写该字段,或者您可以创建不需要的路径:
class SendFileForm(forms.Form): path = forms.CharField(required=False) ...
要么
<form action={% url "sent" %} method="post" enctype="multipart/form-data"> ... {{ form.songfile }} {{ form.path }} ... </form>