Abdu4
Abdu4

Reputation: 1558

Django doesn't redirect to the same page

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

Answers (1)

Bemwa Malak
Bemwa Malak

Reputation: 1349

You have to pass the messages variable to the render method:

render(request,'index.html', {'messages': messages})

Upvotes: 3

Related Questions