4
안녕하세요 저는 follwoing 2 기능을 사용하여 메일을 통해 pdf 파일을 만들어 보냅니다. 내가 도대체 뭘 잘못하고있는 겁니까. (내보내기 PDF 기능은 브라우저에서 표시 할 때 제대로 작동합니다.) "TypeError : 'ContentFile'객체가 인덱싱" "을 지원하지 않습니다. 내가 뭘 잘못하고 있니? 거의 모든이 코드는 일부 블로그에서 가져온 것이므로 어떻게 작동하는지 정확히 알지 못합니다. 그러나 당신이 어떤 점을 이해하지 못한다면 의견을 말하십시오. 나는 대답 할 것이다.Django에서 전자 메일 첨부 파일로 PDF를 보내는 방법
if request.method=="POST":
form = ReportSendMailForm(request.POST)
if form.is_valid():
email = form.cleaned_data['mail']
message = form.cleaned_data['message']
print email
print message
result = export_pdf(request,id)
file_to_be_sent= ContentFile(result)
#print file_to_be_sent
if result:
#try :
subject, from_email, to = request.user.username+' has sent a report for review',' Dtz Team', email
html_content = render_to_string('email/report.html',{'username':request.user,'messgae':message})
msg = EmailMultiAlternatives(subject,'', from_email, [to])
msg.attach_alternative(html_content, "text/html")
msg.attach("Report.pdf", file_to_be_sent, "application/pdf")
msg.send()
messages.success(request,'Please check your email id '+email+' for further instructions.')
return HttpResponse('success')
#except:
# pass
messages.error(request,'Error occured in the pdf.')
return HttpResponse(status=410)
PDF 내보내기 기능은
def export_pdf(request,id):
report = Report.objects.get(id=id)
options1 = ReportPropertyOption.objects.filter(report=report,is_active=True)
for option in options1:
option.exterior_images = ReportExteriorImages.objects.filter(report = option)
option.interior_images = ReportInteriorImages.objects.filter(report = option)
option.floorplan_images = ReportFloorPlanImages.objects.filter(report = option)
option.fitouts = ReportFitOut.objects.filter(propertyoption = option)
if (option.gps_longitude):
option.map = "http://maps.google.com/maps/api/staticmap?zoom=12&size=400x400&maptype=roadmap&sensor=false¢er=\""+str(option.gps_latidtude)+","+str(option.gps_longitude)+"\""
html = render_to_string('report/export.html', { 'pagesize' : 'A4', }, context_instance=RequestContext(request,{'options1':options1,'meta':report.meta}))
result = StringIO.StringIO()
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")), dest=result, link_callback=fetch_resources)
if not pdf.err:
return result
else:
return None
정말 빠르고 정확했습니다. 고마워 :) 그리고 완벽하게 일했습니다. –