Ben*_*tin 6 django file-upload django-forms
你好 - 我写了一个非常简单的应用程序来接受工作申请,包括简历上传.
在本地运行捆绑服务器进行开发,我可以通过前端和管理界面上的Web表单成功上传文件.在远程服务器上运行它(带有mod_python的Apache)我可以通过管理界面成功上传文件,但尝试通过Web前端不会产生上传文件.
我添加FILE_UPLOAD_PERMISSIONS = 0644了设置,检查了两个设置文件,并查找了其他地方描述的类似问题.图我要么忘记了一个设置,要么需要以不同的方式解决这个问题.有什么建议?
供参考,包括代码.
该模型:
class Application(models.Model):
job = models.ForeignKey('JobOpening')
name = models.CharField(max_length=100)
email = models.EmailField()
date_applied = models.DateField()
cover_letter = models.TextField()
resume = models.FileField(upload_to='job_applications', blank=True)
def __str__(self):
return self.name
def save(self):
if not self.date_applied:
self.date_applied = datetime.today
super(Application, self).save()
Run Code Online (Sandbox Code Playgroud)
表格:
class JobApplicationForm(ModelForm):
class Meta:
model = Application
def save(self, commit=True, fail_silently=False):
super(JobApplicationForm, self).save(commit)
Run Code Online (Sandbox Code Playgroud)
风景:
def job_application(request):
ajax = request.GET.has_key('ajax')
if request.method == 'POST':
form = JobApplicationForm(request.POST, request.FILES)
if form.is_valid():
new_application = form.save()
return HttpResponseRedirect('/about/employment/apply/sent/')
elif request.GET.has_key('job'):
job = request.GET['job']
form = JobApplicationForm({'job': job})
else:
return HttpResponseRedirect('/about/')
t = loader.get_template('employment/job_application.html')
c = Context({
'form': form,
})
return HttpResponse(t.render(c))
Run Code Online (Sandbox Code Playgroud)
Dan*_*man 26
您不显示模板.如果我不得不猜测,看到上传通过管理界面工作,我会说你忘了把enctype放在你的表格标签中:
<form enctype="multipart/form-data" method="post" action="/foo/">
Run Code Online (Sandbox Code Playgroud)
首先,您确定模板中带有enctype="multipart/form-data"标志吗?
<form action="." method="POST" enctype="multipart/form-data">
...
</form>
Run Code Online (Sandbox Code Playgroud)
首先,无需save()在ModelForm中进行覆盖,因为您无需在其中进行任何额外的工作。
其次,无需存储new_application变量,只需调用即可form.save()。
第三,您应该在JobOpening模型中使用一个Slug字段,并将其传递到querystring中。请记住,这不是PHP,请使用像/jobs/opening/my-cool-job-opening/这样的漂亮url ,这就是的用途。独特的人类可读网址。就目前而言,您的GET代码非常脆弱。
最后,您可能需要使用render_to_response快捷方式功能,因为它可以省去冗长地调用模板加载器,创建上下文并手动呈现它们的麻烦。
| 归档时间: |
|
| 查看次数: |
6761 次 |
| 最近记录: |