django表单提交

815次阅读
没有评论

HTML表单是网站交互性的经典方式。 本章将介绍如何用Django对用户提交的表单数据进行处理。

比如一个简单的页面

django表单提交

实现功能:

当提交一条数据时,网页下面展示提交的信息。

放在表格中,如果有多条,则追加显示

接着上一篇文章《django显示当前时间》继续写

修改mysite目录下的urls.py,增加一条路由userInfo

urlpatterns = [
    path(<span class="hljs-string">'admin/'</span>, admin.site.urls),
    path(<span class="hljs-string">'cur_time/'</span>, views.cur_time),
    path(<span class="hljs-string">'userInfo/'</span>, views.userInfo),
]

修改blog目录下的views.py,增加函数userInfo

<span class="hljs-comment">#定义全局字典</span>
user_list = []
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">userInfo</span><span class="hljs-params">(req)</span>:</span>
    <span class="hljs-comment">#判断请求类型</span>
    <span class="hljs-keyword">if</span> req.method == <span class="hljs-string">"POST"</span>:
        <span class="hljs-comment">#获取表单数据,如果获取不到,则为None</span>
        username = req.POST.get(<span class="hljs-string">"username"</span>,<span class="hljs-keyword">None</span>)
        sex = req.POST.get(<span class="hljs-string">"sex"</span>, <span class="hljs-keyword">None</span>)
        email = req.POST.get(<span class="hljs-string">"email"</span>, <span class="hljs-keyword">None</span>)
        <span class="hljs-comment"># print(username,sex,email)</span>
        <span class="hljs-comment">#定义字典</span>
        user = {<span class="hljs-string">'username'</span>:username,<span class="hljs-string">'sex'</span>:sex,<span class="hljs-string">'email'</span>:email}
        <span class="hljs-comment">#追加到列表中</span>
        user_list.append(user)

    <span class="hljs-comment"># 将列表传给模板index.html</span>
    <span class="hljs-keyword">return</span> render(req, <span class="hljs-string">"index.html"</span>, {<span class="hljs-string">"user_list"</span>: user_list})

在templates目录下创建index.html,内容如下:

<!DOCTYPE html>
<html lang=<span class="hljs-string">"en"</span>>
<head>
    <meta charset=<span class="hljs-string">"UTF-8"</span>>
    <title>Title</title>
</head>
<body>
<form action=<span class="hljs-string">"/userInfo/"</span> method=<span class="hljs-string">"post"</span>>
    <p>姓名<input type=<span class="hljs-string">"text"</span> name=<span class="hljs-string">"username"</span>/></p>
    <p>性别<input type=<span class="hljs-string">"text"</span> name=<span class="hljs-string">"sex"</span>/></p>
    <p>邮箱<input type=<span class="hljs-string">"text"</span> name=<span class="hljs-string">"email"</span>/></p>
    <p><input type=<span class="hljs-string">"submit"</span> value=<span class="hljs-string">"提交"</span>/></p>
</form>

{<span class="hljs-comment">#判断列表有数据的情况下#}</span>
{% <span class="hljs-keyword">if</span> user_list %}
    <hr/>
    <h1>数据展示</h1>
    {<span class="hljs-comment">#border-collapse属性显示细线表格#}</span>
 <table border=<span class="hljs-string">"1"</span> cellspacing=<span class="hljs-string">"0"</span> bordercolor=<span class="hljs-string">"#000000"</span> style=<span class="hljs-string">"border-collapse:collapse;"</span>>
        <tr>
            <td>姓名</td>
            <td>性别</td>
            <td>邮箱</td>
        </tr>
        {<span class="hljs-comment">#使用for循环遍历列表#}</span>
 {% <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> user_list %}
            <tr>
                {<span class="hljs-comment">#展示数据#}</span>
 <td>{{i.username}}</td>
                <td>{{i.sex}}</td>
                <td>{{i.email}}</td>
            </tr>
        {<span class="hljs-comment">#结束for循环#}</span>
 {% endfor %}
    </table>
{<span class="hljs-comment">#一定要写结束符#}</span>
{% endif %}


</body>
</html>

修改settings.py文件,关闭csrf。全称为CSRF(Cross-site request forgery)跨站请求伪造

注释即可

MIDDLEWARE = [
    <span class="hljs-string">'django.middleware.security.SecurityMiddleware'</span>,
    <span class="hljs-string">'django.contrib.sessions.middleware.SessionMiddleware'</span>,
    <span class="hljs-string">'django.middleware.common.CommonMiddleware'</span>,
    <span class="hljs-comment"># 'django.middleware.csrf.CsrfViewMiddleware',</span>
    <span class="hljs-string">'django.contrib.auth.middleware.AuthenticationMiddleware'</span>,
    <span class="hljs-string">'django.contrib.messages.middleware.MessageMiddleware'</span>,
    <span class="hljs-string">'django.middleware.clickjacking.XFrameOptionsMiddleware'</span>,
]

访问网页

http://127.0.0.1:8000/userInfo/

输入一条数据,点击提交

django表单提交

网站底部会出现一条数据

django表单提交

可以多增加几条数据

django表单提交

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:wuyou2022-12-26发表,共计2244字。
新手QQ群:570568346,欢迎进群讨论 Python51学习