Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python DJANGO未在我的html模板中返回上下文_Python_Django - Fatal编程技术网

Python DJANGO未在我的html模板中返回上下文

Python DJANGO未在我的html模板中返回上下文,python,django,Python,Django,为什么此上下文不在我的html模板中呈现: return render(request, 'index.html',{'message_name':name}) 成功提交我的联系人表单后,此上下文将打印用户名。这是我的密码: 视图.py @csrf_exempt def home_view(request,*args,**kwargs): name = None if request.method == "POST": contact_f

为什么此上下文不在我的html模板中呈现:

 return render(request, 'index.html',{'message_name':name}) 
成功提交我的联系人表单后,此上下文将打印用户名。这是我的密码:

视图.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})
from django.urls import path
from pages import views


urlpatterns = [
    path('', views.home_view, name="home"),
    
]
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')),
    
]
应用程序URL.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})
from django.urls import path
from pages import views


urlpatterns = [
    path('', views.home_view, name="home"),
    
]
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')),
    
]
根URL.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})
from django.urls import path
from pages import views


urlpatterns = [
    path('', views.home_view, name="home"),
    
]
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>
 {% if message_name %}
                <div class="centerTest">
                     <h1> Thanks {{ message_name }} for your message. We will get back to you very soon</h1>  
                </div>
{% else %} 

                <div class="contact__container bd-grid">
                    <form action="#contact" method = "POST" class="contact__form">
                              
                        {% for error in  form.non_field_errors %}
                          <div class="alert alert-danger" role="alert">
                               {{ error }}
                          </div>
                        {% endfor %}
                        
                        <label>Name:</label>  
                        {{ form.errors.name }}
                        <input type="text" placeholder="Name" name="name" class="contact__input" {% if form.is_bound %}value="{{ form.name.value }} {% endif %}">
                        <label>Email:</label>
                        {{ form.errors.email }}
                        <input type="mail" placeholder="Email" name="email" class="contact__input" {% if form.is_bound %}value="{{ form.email.value }} {% endif %}">
                        <label>Subject:</label>
                        {{ form.errors.subject }}
                        <input type="text" placeholder="optional" name="subject" class="contact__input" {% if form.is_bound %}value="{{ form.subject.value }} {% endif %}">
                        <label>Message:</label>
                        {{ form.errors.message }}
                        <textarea name="message" placeholder="message"  id="" cols="0" rows="10"   class="contact__input" >{% if form.is_bound %}{{ form.message.value }} {% endif %}</textarea>
                         
                        <input type="submit" value="Send" class="contact__button button">
{% endif %}

接触
{%if消息_name%}
谢谢{{message_name}}的留言。我们会很快回复你的
{%else%}
{%表示表单中的错误。非\u字段\u错误%}
{{error}}
{%endfor%}
姓名:
{{form.errors.name}
电邮:
{{form.errors.email}
主题:
{{form.errors.subject}
信息:
{{form.errors.message}
{%if form.is_-bound%}{{form.message.value}{%endif%}
{%endif%}
如果我删除HttpResponseRedirect,那么它将在我的html模板中显示上下文

但问题是它在刷新时一次又一次地重新提交我的。添加HttpResponseRedirect后,它将停止重新提交表单,但不打印上下文。

作为基本的Python概念(可能还有任何其他编程语言),您不能有两个
return
语句,一个在函数中,一个在另一个之上,因为第一个语句将使第二个语句无法访问

例如:

def say_hello(name, age):
    return f"hello {name}"
    return f"your age is {age}"
如果执行此函数,将只得到“hello john doe”,因为第二条返回语句从未执行过

在您的情况下,如果保留
return HttpResponseRedirect()
,则将永远不会执行
return render()
,因此您将永远看不到上下文


如果您想将用户重定向到特定路由,您应该有条件地这样做,以便有机会执行一个
返回或另一个。

您不能在redirect中直接传递上下文,也不能在django中直接传递HttpResponseRedirect。您需要使用会话方法。试试这个:

@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()
          request.session['name'] = name
          return redirect(home_view)
       else:
          print("not submitted")
          
           

    else:
       contact_form = ContactForm()
         

    return render(request, 'index.html',{'form':contact_form})

在index.html中传递此
{{request.session.name}
以显示您的上下文。

您能给我举个例子吗?我只需要在重定向后在html页面中显示上下文如何在djago中在html重定向页面中显示上下文?在一个代码块中不能有两个返回语句,即任何编码语言的通用法则