Django---Django返回用户输入数据

  前面写了关于HTML和Django结合的文章,经过视图与HTML结合,而后加上urls渲染返回给用户浏览器。很明显咱们都能看到这些仅仅是静态HTML,那如何经过Django建立动态的HTML呢?html

动态的页面

咱们先经过一个例子来简单了解下。django

一、首先经过在views.py文件中添加一些动态的数据

# Views.py

from django.http import HttpResponse
import datetime

# 建立动态数据
def time(request):
    now = datetime.datetime.now()
    html = '如今的时间为%s'%now
    return HttpResponse(html)

二、经过urls.py文件渲染给浏览器

# urls.py

from django.contrib import admin
from django.urls import path
from Anjing import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('time/', views.time),    # 添加对应的路径
]

三、启动Django服务

能够看到显示的是当前数据,从新刷新,数据就会变化。浏览器

经过上面例子,已经建立好了一个小小的动态页面,固然此次要说的不单单是这样,是须要用户的数据交互,经过用户输入的内容,并返回给用户post

接收并返回数据

当咱们登陆博客的时候,博客都会返回给咱们一个用户名,而这个用户名是本身设置的,这里安静写一个简单的登陆网站,网站直接返回登陆的名称网站

一、编写登陆页面HTML,添加路径渲染,添加视图返回

在templates目录下建立一个login.html(这个页面为登陆页面)ui

# login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登陆</title>
</head>
<body>
    <h1>
        <p style="text-align:center" font size="2">欢迎来到安静的博客:</p>


    </h1>
    <h1>
        <p style="text-align:center">请输出帐号密码:</p>
    </h1>
    <form action="/index/" method="post"><p style="text-align:center">用户:<input type="text" name="username" /><br />
        </p>
        <p style="text-align:center">密码:<input type="password" name="password" /><br />
        <input type="submit" value="提交" />
    </form>

</body>
</html>

在templates目录下建立一个index.html文件(登陆后跳转的页面)url

<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<head>
    <title>安静博客乐园</title>
</head>
<body>
<center>
    <li>欢迎您:  
    </li>
</center>
</ul>
</body>
</html>

在urls.py文件中添加对应的路径,而后启动服务,在浏览器中输入对应的路径查看spa

# urls.py

from django.contrib import admin
from django.urls import path
from Anjing import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', views.login),
    path('index/', views.index),
]

在views.py文件中添加视图返回内容3d

# views。py

from django.shortcuts import render

def index(request):
    if  request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        return render(request, 'index.html')

所有工做都准备完成了,而后启动服务,打开浏览器,查看咱们的页面渲染code

 

 

咱们在输入框内随便输入用户信息点击提交

发现出现了403,什么状况,咱们上面已经对页面进行了渲染,应该不会出错哈。

 你们不要着急,其实这个是正常的,这个属于Djaongo有一个跨站请求保护的机制,咱们能够从报错中发现须要咱们加入 {% csrf_token %}

# login.html

<!
DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>首页</title> </head> <body> <h1> <p style="text-align:center" font size="2">欢迎来到安静的博客:</p> </h1> <h1> <p style="text-align:center">请输出帐号密码:</p> </h1> <form action="/index/" method="post"> {% csrf_token %} <p style="text-align:center">用户:<input type="text" name="username" /><br /> </p> <p style="text-align:center">密码:<input type="password" name="password" /><br /> <input type="submit" value="提交" /> </form> </body> </html>

固然了咱们也要在返回的页面加入一些参数和修视图中的代码

# index.html
<html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head> <title>安静博客乐园</title> </head> <body> <center> <li>欢迎您, <tbody> <tr> <td>{{data}}</td> </tr> </tbody> </li> </center> </ul> </body> </html>

修改views.py视图文件

# views.py

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    if  request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        return render(request, 'index.html', {'data':username})

这个时候咱们在此启动Django服务,而后输入对应数据点击提交按钮,发现数据已经所有接收了。

咱们经过了登陆的小案例,大体的了解到了数据交互和数据接收应该如何进行,主要的一个知识,我理解到Django的一个跨站请求保护机制。屡次使用,就能孰能生巧了

 

 

若是感受安静写的对您有帮助,请点个关注,若是哪里有不懂的或者不明白的,能够下方留言,看到后第一时间回复

相关文章
相关标签/搜索