可以在 views 中重载 django 么?
資深大佬 : Eyon 3
有个需求,需要在 view 中完成某个事情后,重新加载 django,能实现吗?
大佬有話說 (8)
需求是:用户每上传一张图片,就将这张图片作为附件发送给某个邮箱。
但现在的问题是?发送邮件时附件会将之前上传的图片都作为附件发送(而不是只发送最近上传的一张),不知道问题出在哪里。。。
if request.method == ‘POST’:
obj = UploadFile(request.POST,request.FILES)
fl = request.FILES.get(‘f1’)
if not fl:
return HttpResponse(‘please select file’)
with open(‘uploads/’+fl.name,’wb+’) as f:
f.write(fl.read())
with open(‘uploads/’+fl.name,’rb’) as ff:
msg.attach_file(ff.name)
msg.send()
os.remove(ff.name)
return HttpResponse(‘success’)
如果上传的文件值得做个记录,建议加一个数据表,包含一个 FileField 数据段。然后按照 Django 标准方法保存文件及相关数据,再发送文件。而发送邮件及附件最好丢到任务队列里,有个相关的数据表更方便提交给 celery 之类。