python - Context Variable will not show up in Django template -


i writing blog application, , variable not show when page rendered. here views.py function blog app:

def post_share(request, post_id):     # retrieves post id     post = get_object_or_404(post, id=post_id, status='published')     sent = false      if request.method == 'post':         # form submitted         form = emailpostform(request.post)         if form.is_valid():             # form fields passed validation             cd = form.cleaned_data              post_url = request.build_absolute_uri(post.get_absolute_url())                                                       subject = '{} ({}) recommends reading "{}"'.format(cd['name'], cd['email'], post.title)             message = 'read "{}" @ {}\n\n{}\'s comments: {}'.format(post.title, post_url, cd['name'], cd['comments'])              send_mail(subject, message, 'admin@myblog.com', [cd['to']])             sent = true      else:         form = emailpostform()     return render(request, 'blog/post/share.html', {'post': post,                                                 'form': form,                                                 'sent': sent}) 

and forms.py:

from django import forms .models import comment  class emailpostform(forms.form):     name = forms.charfield(max_length=25)     email = forms.emailfield()     = forms.emailfield()     comments = forms.charfield(required=false, widget=forms.textarea) 

relevant part of html template:

{% block content %}     {% if sent %}         <h1> email sent </h1>         <p>             "{{ post.title }}" sent {{ cd.to }} .         </p>     {% else %}         <h1> share "{{ post.title }}" email</h1>         <form action="." method="post">             {{ form.as_p }}             {% csrf_token %}             <input type="submit" value="send e-mail">         </form>     {% endif %} 

the template loads , email sent says:

"post test" succesfully sent .

i need recipients email.

you need include cleaned data in template context. however, cd defined when form valid, can like:

data = {     'post': post,     'form': form,     'sent': sent, }  if sent:     data['cd'] = cd return render(request, 'blog/post/share.html', data) 

since don't need entire cd dictionary in template, option pass variable need, cd['to'].

data = {     'post': post,     'form': form,     'sent': sent, }  if sent:     data['sent_to'] = cd['to'] return render(request, 'blog/post/share.html', data) 

then in template, use {{ sent_to }} instead of {{ cd.to }}


Comments

Popular posts from this blog

java - pagination of xlsx file to XSSFworkbook using apache POI -

Unlimited choices in BASH case statement -

apache - How do I stop my index.php being run twice for every user -