django表单提交

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/

输入一条数据,点击提交

网站底部会出现一条数据

可以多增加几条数据

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小狼的世界

Mac下安装Android模拟器

像iPhone的iOS或者其他的手机操作系统一样,Android的开发者非常需要一个模拟器,以在设备上实地测试前对自己开发的应用进行测试。这需要借住SDK来实现...

3712
来自专栏CodingBlock

Android查缺补漏(View篇)--布局文件中的“@+id”和“@id”有什么区别?

但需要注意的是在布局文件中,被引用的id要在引用位置的上面,否则会编译出错,如下:

1264
来自专栏ionic3+

ionic3使用带图标带事件的toast

这个时候,如果想扩展这些功能,一是修改源码,二是自己实现,然而这两种方法都比较麻烦,比较好的解决方案是利用现有的开源代码,搜索ionic的相关组件寥寥无几,这个...

922
来自专栏云计算

在Ubuntu 16.04上安装WordPress

在本指南中,您将学习如何在运行Ubuntu 16.04的Linode上安装WordPress。WordPress是一个流行的动态内容管理系统,专注于博客。Wor...

5402
来自专栏草根专栏

使用VS Code开发asp.net core (上)

本文是基于Windows10的. 下载地址: https://code.visualstudio.com/ insider 版下载地址: https://cod...

3455
来自专栏自由而无用的灵魂的碎碎念

解决使用SecureCRT出现的Generic clipboard failure错误

我使用securecrt连接hp-ux进行操作,使用的版本是securecrt 6.6 64bit。

1794
来自专栏移动端开发

告诉你 iOS9.0 之后的Bitcode到底是什么!!

 用Xcode 7 beta 3在真机(iOS 8.3)上运行一下工程,结果发现工程编译不过。看了下问题,报的是以下错误: ld: ‘/Users/**/Fr...

3898
来自专栏java架构师

资源文件的动态加载

页面加载 首先,浏览器发起直接对目标html的请求,然后分析其中用到的资源并下载,浏览器有自己的规则来判断什么样的资源可以被并行下载,什么样的不可以,浏览器对加...

3749
来自专栏landv

如何破解Excel VBA密码

首先,如果文件格式是(.xslm),需要先打开Excel文件,另存为2003版格式(.xls)。

1.4K2
来自专栏前端杂谈

广告等第三方应用嵌入到web页面方案 之 使用js片段

46011

扫码关注云+社区

领取腾讯云代金券