请求.方法和请求.进入姜戈



我正在学习教程,但我无法理解其中的某些行:

from django.shortcuts import render, get_object_or_404
from django.http import HttpResponseRedirect
from . models import Page
from .forms import ContactForm
def index(request, pagename):
pagename = '/' + pagename
pg = get_object_or_404(Page, permalink=pagename)
context = {
'title': pg.title,
'content': pg.bodytext,
'last_updated': pg.update_date,
'page_list': Page.objects.all(),
}
# assert False
return render(request, 'pages/page.htm', context)

def contact(request):
submitted = False
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
#assert False 
return HttpResponseRedirect('/contact?submitted=True')
else:
form = ContactForm()
if 'submitted' in request.GET:
submitted = True
return render(request,'pages/contact.htm',{'form': form, 'page_list': Page.objects.all(), 'sbmitted': submitted})

以上是pages/view.py文件

{% extends "pages/page.htm" %}
{% block title %} Contact us {% endblock title %}
{% block content %}
<h1>Contact us</h1>
{% if submitted %}
<p class="success">
Your message was submitted successfully. Thankm you.
</p>
{% else %}
<form action="" method="post" novalidate>
<table>
{{ form.as_table }}
<tr>
<td>&NonBreakingSpace;</td>
<td><input type="submit" value="Submit"></td>
</tr>
</table>
{% csrf_token %}
</form>
{% endif %}
{% endblock content %}

以上是pages/contact.htm文件

那么,是什么意思

if requested.method == 'POST':

为什么会有以下检查?

if submitted in request.GET:
submitted=True
  • request.method给出了提交表单的方法,因此第一个 事物检查表单是否使用 POST 方法提交
  • 请求。GET返回GET方法传递的所有变量的上下文(类似于python中的字典(
  • 而且应该有

    如果要求。GET.get('submitted'( == "True":

    submitted = True
    

而不是

if submitted in request.GET:
submitted=True
  • 请求。GET.get('submitted'( 给出在 url 中传递的已提交值
  • 需要注意的是,上面代码中提交的两者是不同的,前者是上下文中的键(类似于字典(,后者是 views.py 中的变量
  1. 您可以通过GET或POST发送数据。使用 GET,您可以通过 URL 发送数据。例如

www.mydomain.com/Form?Key1=xxxxx&Key2=yyyyyyy

使用开机自检,数据被"隐藏"发送。例如,在登录表单中,您不希望密码在 URL 中可见。这就是为什么在这些形式中被用作发送 POST 的方法。

验证您发送的数据是否为 POST 格式if request.method == 'POST':

阿拉伯数字。

else:
form = ContactForm()
if 'submitted' in request.GET:
submitted = True

这意味着,如果发送方法不是 POST,而是 GET,请查看在发送的信息中是否有submitted参数,如果是,则将其值设置为 True。

最新更新