2016-04-30 14 views
6

Sono un principiante. Ma se non ci sono domande stupide ... ecco la mia. Perché la mia email (nella parte del corpo) non contiene il messaggio?django - render_to_string non funziona

Ecco il mio codice croccanti:

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() 

Vorrei davvero apprezzare alcun aiuto .. lavorando dalle 9 del mattino e ancora niente ..

mio modello (contact_template.txt), (tutto le mie email ricevute contenevano questo, ma nessun messaggio):

Contact Name: 


Email: 


Content: 

e le mie opinioni: (devo dire che è intimidatorio ...)

012.
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

Benvenuti in SO Anna. Ti dispiacerebbe pubblicare il tuo template + view per questo? Il codice dovrebbe essere minimamente completo affinché chiunque possa riprodurre lo stesso problema – MohitC

+0

oh grazie per aver risposto (non potrebbe essere più felice), lei è: –

+0

Dove? Sto ancora aspettando Puoi modificare la tua domanda principale per postarla – MohitC

risposta

7

Per motivi di chiarezza, proverei a limitarti a un numero massimo di caratteri per riga. Ciò rende molto difficile la lettura della riga render_to_string e rende ancora più difficile trovare errori.

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

Sembra che manchi le posizioni nel modello in cui le variabili devono essere stampate. È possibile definire le seguenti variabili:

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

Essi non sono tuttavia utilizzati nel modello. Esempio:

Contact Name: 
{{ contact_name }} 

Email: 
{{ contact_email }} 

Content: 
{{ form_content }} 
+0

oh sei un genio !!! grazie, quindi posso usare jinja nei file .txt? –

+0

funziona !! :) :) grazie @Lucas Moeskops –

+0

Sì, funziona per qualsiasi tipo di file credo. Buono :-) –