Reputation: 1558
I'm working on a django project website. When submitting a form I need to save the data and show a message with from django.contrib import messages
module. It works perfectly with saving data but it never shows the message and redirecting to the same page.
Views.py class.
def showIndex(request):
if request.method == 'POST':
contact = Contact()
name = request.POST.get('name')
email = request.POST.get('email')
message = request.POST.get('message')
contact.name = name
contact.email = email
contact.message = message
print('yes and no ')
messages.success(request, 'Profile details updated.')
contact.save()
return render(request,'index.html')
return render(request,'index.html')
and this is the codes in index.html. I have created the form here.
<form method="POST" class="u-clearfix u-form-spacing-30 u-form-vertical u-inner-form" style="padding: 10px">
{% csrf_token %}
<div class="u-form-email u-form-group u-form-partition-factor-2">
<label for="email-319a" class="u-label u-text-body-alt-color u-label-1">Email</label>
<input type="email" placeholder="Enter a valid email address" id="email-319a" name="email" class="u-border-2 u-border-no-left u-border-no-right u-border-no-top u-border-white u-input u-input-rectangle" required="" />
</div>
<div class="u-form-group u-form-name u-form-partition-factor-2">
<label for="name-319a" class="u-label u-text-body-alt-color u-label-2">Name</label>
<input type="text" placeholder="Enter your Name" id="name-319a" name="name" class="u-border-2 u-border-no-left u-border-no-right u-border-no-top u-border-white u-input u-input-rectangle" required="" />
</div>
<div class="u-form-group u-form-message">
<label for="message-319a" class="u-label u-text-body-alt-color u-label-3">Message</label>
<textarea placeholder="Enter your message" rows="4" cols="50" id="message-319a" name="message" class="u-border-2 u-border-no-left u-border-no-right u-border-no-top u-border-white u-input u-input-rectangle" required=""></textarea>
</div>
<div class="u-align-left u-form-group u-form-submit">
<a href="#" class="u-btn u-btn-submit u-button-style u-white u-btn-2">Submit</a>
<input type="submit" value="submit" class="u-form-control-hidden" />
</div>
</form>
<div>
{%for message in messages%}
{{message}}
{%endfor%}
</div>
Upvotes: 0
Views: 65
Reputation: 1349
You have to pass the messages variable to the render method:
render(request,'index.html', {'messages': messages})
Upvotes: 3