我正在学习教程,但我无法理解其中的某些行:
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> </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 中的变量
- 您可以通过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。