2016-04-30 2 views
6

Я новичок. Но, если нет глупых вопросов ... вот моя. Почему мой адрес электронной почты (в части тела) не содержит сообщения?django - render_to_string не работает

Вот мой хрустящей код:

message = render_to_string('contact_template.txt', {'contact_name': contact_name, 'contact_email': contact_email, 'form_content': content}, context_instance=RequestContext(request)) 
email = EmailMessage("New contact form submission", message, "[email protected]" +'', ['[email protected]'], headers = {'Reply-To': contact_email }) 
email.send() 

Я был бы очень признателен за любую помощь .. работать над ней с 9 утра и до сих пор ничего ..

Мой шаблон (contact_template.txt), (все мои полученные электронные письма, содержащиеся в этом, но нет сообщений):

Contact Name: 


Email: 


Content: 

и мои взгляды: (я должен сказать, что это пугает ...)

from polls.forms import ContactForm 
from django.core.mail import EmailMessage 
from django.template import Context, Template, RequestContext 
from django.shortcuts import render 
from django.shortcuts import redirect 
from django.core.mail import send_mail, BadHeaderError 
from django.http import HttpResponse, HttpResponseRedirect 
from django.template.loader import render_to_string, get_template 

def index(request): 
    return HttpResponse("Hello, world. You're at the poll index.") 

def contact(request): 
    form_class = ContactForm 

    # logic! 
    if request.method == 'POST': 
     form = form_class(data=request.POST) 

     if form.is_valid(): 
      contact_name = request.POST.get('contact_name', '') 
      contact_email = request.POST.get('contact_email', '') 
      content = request.POST.get('content', '')   

      message = render_to_string('contact_template.txt', {'contact_name': contact_name, 'contact_email': contact_email, 'form_content': content}, context_instance=RequestContext(request)) 

      email = EmailMessage("New contact form submission", message, "[email protected]" +'', ['[email protected]'], headers = {'Reply-To': contact_email }) 
      email.send() 
      return redirect('contact') 

    return render(request, 'contact.html', {'form': form_class,}) 
+0

Добро пожаловать в SO Anna. Не могли бы вы разместить свой шаблон + для этого? Код должен быть минимальным для любого, чтобы воспроизвести ту же самую проблему. – MohitC

+0

Ох спасибо за ответ (не может быть счастливее), ее это: –

+0

Где? Все еще ждут. Вы можете отредактировать свой главный вопрос, чтобы опубликовать его – MohitC

ответ

7

Для ясности я попытался бы ограничить себя максимальным количеством символов в строке. Это делает чтение строки render_to_string очень сложной и затрудняет поиск ошибок.

context = { 
    'contact_name': contact_name, 
    'contact_email': contact_email, 
    'form_content': content 
} 
message = render_to_string('contact_template.txt', context, 
          context_instance=RequestContext(request)) 

Кажется, вам не хватает местоположений в шаблоне, где должны печататься переменные. Определяются следующие переменные:

  • 'CONTACT_NAME'
  • 'contact_email'
  • 'form_content'

Они, однако, не используются в шаблоне. Пример:

Contact Name: 
{{ contact_name }} 

Email: 
{{ contact_email }} 

Content: 
{{ form_content }} 
+0

о, вы гений !!! спасибо, так что я могу использовать jinja в .txt-файлах? –

+0

его работа !! :) :) спасибо @Lucas Moeskops –

+0

Да, это работает для любого типа файла, я думаю. Хорошо :-) –

Смежные вопросы