HTML表单是网站交互性的经典方式。 本章将介绍如何用Django对用户提交的表单数据进行处理。
比如一个简单的页面
实现功能:
当提交一条数据时,网页下面展示提交的信息。
放在表格中,如果有多条,则追加显示
接着上一篇文章《django显示当前时间》继续写
修改mysite目录下的urls.py,增加一条路由userInfo
urlpatterns = [
path('admin/', admin.site.urls),
path('cur_time/', views.cur_time),
path('userInfo/', views.userInfo),
]
修改blog目录下的views.py,增加函数userInfo
#定义全局字典
user_list = []
def userInfo(req):
#判断请求类型
if req.method == "POST":
#获取表单数据,如果获取不到,则为None
username = req.POST.get("username",None)
sex = req.POST.get("sex", None)
email = req.POST.get("email", None)
# print(username,sex,email)
#定义字典
user = {'username':username,'sex':sex,'email':email}
#追加到列表中
user_list.append(user)
# 将列表传给模板index.html
return render(req, "index.html", {"user_list": user_list})
在templates目录下创建index.html,内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/userInfo/" method="post">
<p>姓名<input type="text" name="username"/></p>
<p>性别<input type="text" name="sex"/></p>
<p>邮箱<input type="text" name="email"/></p>
<p><input type="submit" value="提交"/></p>
</form>
{#判断列表有数据的情况下#}
{% if user_list %}
<hr/>
<h1>数据展示</h1>
{#border-collapse属性显示细线表格#}
<table border="1" cellspacing="0" bordercolor="#000000" style="border-collapse:collapse;">
<tr>
<td>姓名</td>
<td>性别</td>
<td>邮箱</td>
</tr>
{#使用for循环遍历列表#}
{% for i in user_list %}
<tr>
{#展示数据#}
<td>{{i.username}}</td>
<td>{{i.sex}}</td>
<td>{{i.email}}</td>
</tr>
{#结束for循环#}
{% endfor %}
</table>
{#一定要写结束符#}
{% endif %}
</body>
</html>
修改settings.py文件,关闭csrf。全称为CSRF(Cross-site request forgery)跨站请求伪造
注释即可
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
访问网页
http://127.0.0.1:8000/userInfo/
输入一条数据,点击提交
网站底部会出现一条数据
可以多增加几条数据