2016-03-15 18 views
5

Im thực sự mới đối với Django, vì vậy Im vẫn quen với các biểu mẫu. Tôi đang cố gắng để gửi một email trong Django, bằng cách sử dụng tất cả các dữ liệu làm sạch từ các hình thức bao gồm một tập tin được tải lên, và tôi nhận được lỗi "FieldFile 'đối tượng không có thuộc tính' rfind '". khi tôi cố đính kèm tệp vào email. Điều đó có nghĩa là tập tin phải được tải lên một thư mục trong dự án của tôi trước để filepath có cái gì đó để tham khảo?Đối tượng FieldFile 'không có thuộc tính' rfind '

Dưới đây là hình thức của tôi

class Application(forms.Form): 
    first_name = forms.CharField(label="First Name", max_length=50) 
    last_name = forms.CharField(label="Last Name", max_length=50) 
    email = forms.EmailField(label="Email", max_length=80) 
    phone = forms.CharField(label="Phone Number", max_length=30) 
    resume = forms.FileField(label="Resume", max_length=1000) 
    message = forms.CharField(label="Message", max_length=800, widget=forms.Textarea) 

My Xem

if request.method == "POST": 
     form = Application(request.POST, request.FILES) 
     Post = True 

     if form.is_valid(): 
      cleaned_data = form.cleaned_data 
      is_valid = True 

      applicant = Applicant() 
      applicant.first_name = cleaned_data['first_name'] 
      applicant.last_name = cleaned_data['last_name'] 
      applicant.email = cleaned_data['email'] 
      applicant.phone = cleaned_data['phone'] 
      applicant.resume = request.FILES['resume'] 
      applicant.message = cleaned_data['message'] 
      applicant.job = career.name 
      date = datetime.datetime.now() 
      applicant.save() 

      email_context = {'interested': applicant} 

      html_content = render_to_string("email/contact/application-html.html", email_context) 

      email = EmailMessage('Some is interested in a demo with Atlas', html_content, settings.DEFAULT_FROM_EMAIL, 
           ['[email protected]']) 
      email.attach_file(applicant.resume) 
      email.send(fail_silently=False) 


     else: 
      is_valid = False 

    else: 
     form = Application() 
     Post = False 
     is_valid = False 

Trả lời

4

attach_file() mất một con đường như là đối số, không FieldFile. Điều này phải là:

email.attach_file(applicant.resume.path) 
+0

ahhh, tôi hiểu. Yeah nó đã thoát khỏi vấn đề, tôi đánh giá cao nó! – JBT

+0

Cảm ơn bạn. Câu trả lời của bạn đã giải quyết được vấn đề của tôi;) – Deadpool

Các vấn đề liên quan