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
Post a Comment