2021年4月11日星期日

DJANGO not returning context in my html template

why this context not rendering in my html template:

 return render(request, 'index.html',{'message_name':name})   

This context will print user name after successful submit my contact form. here is my code:

views.py

@csrf_exempt   def home_view(request,*args,**kwargs):      name = None      if request.method == "POST":         contact_form = ContactForm(request.POST)         if contact_form.is_valid():                        name = request.POST['name']             email = request.POST['email']            subject = request.POST['subject']            message = request.POST['message']            save_details = Contact(name=name,email=email,subject=subject,message=message)            save_details.save()            return HttpResponseRedirect("http://127.0.0.1:8000/")            return render(request, 'index.html',{'message_name':name})          else:            print("not submitted")                                 else:         contact_form = ContactForm()                   return render(request, 'index.html',{'form':contact_form})  

app urls.py

from django.urls import path  from pages import views      urlpatterns = [      path('', views.home_view, name="home"),        ]  

root urls.py

from django.contrib import admin  from django.urls import path,include  from pages import urls  urlpatterns = [      path('admin/', admin.site.urls),      path('', include('pages.urls')),        ]  

index.html

            <!--===== CONTACT =====-->              <section class="contact section" id="contact">                  <h2 class="section-title">Contact</h2>                        <div class="contact__container bd-grid">                      <form action="#contact" method = "POST" class="contact__form">                                                                                                              <label>Name:</label>                                                      <input type="text" placeholder="Name" name="name" class="contact__input" ">                          <label>Email:</label>                                                    <input type="mail" placeholder="Email" name="email" class="contact__input" ">                          <label>Subject:</label>                                                    <input type="text" placeholder="optional" name="subject" class="contact__input" ">                          <label>Message:</label>                                                    <textarea name="message" placeholder="message"  id="" cols="0" rows="10"   class="contact__input" ></textarea>                                                     <input type="submit" value="Send" class="contact__button button">    

if I remove the HttpResponseRedirect then it showing context in my html template enter image description here

But the problem is it resubmitting my from again and again on refresh. After adding HttpResponseRedirect it stop resubmitting the form but not printing the context.

https://stackoverflow.com/questions/67040558/django-not-returning-context-in-my-html-template April 11, 2021 at 08:59AM

没有评论:

发表评论