我正在尝试使用模型表单上传文件,但form.save()给了我错误的请求.
这是我的模特:
class cv(models.Model):
name = models.CharField('Name', max_length=64, null=True)
path_to_cv = models.FileField('CV', upload_to='/', null=True)
这是表格:
class Step2(forms.ModelForm):
class Meta:
model = cv
这是观点:
def phdStep2(request):
if request.method == 'POST':
form = PhdStep2(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect('/step/3/')
else:
form = PhdStep2()
return render(request, 'step2.html', {'form': form})
这是表单的模板:
<form action="/step/2" method="post" class="well form" role="form" enctype="multipart/form-data">
{% csrf_token %}
{% bootstrap_form form %}
{% buttons %}
<button type="submit" class="btn btn-primary">
Submit
</button>
{% endbuttons %}
</form>
这是settings.py中的media_root:
MEDIA_ROOT = '/home/supertux/PyCharm/myproject/admissions/media'
MEDIA_URL = '/media/'
我已经阅读了10个这样的线程,并发现大多数时候问题是我已经合并的形式的enctype.现在据我所知,这应该上传文件,因为它的模型形式,但我总是得到400 Bad Request.我想在数据库中存储文件的名称和路径.我究竟做错了什么?
最佳答案 尝试使用upload_to =’%Y /%m /%d’替换upload_to =’/’,并确保运行django应用程序的用户具有对MEDIA_ROOT的写入权限.如果这些建议都没有帮助您可以打开一些额外的日志记录,希望能够揭示问题所在.
更新:
我建议你将upload_to设置为某个东西,这样你就不会有100个,如果不是1000个文件堆积在同一个目录中.随着时间的推移,将很难管理.我没试过这个,但是如果你把它设置为upload_to =”,它会接受吗?在Django 1.6中,他们使这个参数成为可选的.
Update2:我对哪个版本的可选版本不正确.我正在阅读文档的开发版本.道歉.