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

动态的页面

我们先通过一个例子来简单了解下。

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

# Views.py

from django.http import HttpResponse
import datetime # 创建动态数据
def time(request):
now = datetime.datetime.now()
html = '现在的时间为%s'%now
return HttpResponse(html)

2、通过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), # 添加对应的路径
]

3、启动Django服务

可以看到显示的是当前数据,重新刷新,数据就会变化。

通过上面例子,已经创建好了一个小小的动态页面,当然这次要说的不仅仅是这样,是需要用户的数据交互,通过用户输入的内容,并返回给用户

接收并返回数据

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

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

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

# 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文件(登录后跳转的页面)

<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文件中添加对应的路径,然后启动服务,在浏览器中输入对应的路径查看

# 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文件中添加视图返回内容

# 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')

全部工作都准备完成了,然后启动服务,打开浏览器,查看我们的页面渲染

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

发现出现了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的一个跨站请求保护机制。多次使用,就能孰能生巧了

如果感觉安静写的对您有帮助,请点个关注,如果哪里有不懂的或者不明白的,可以下方留言,看到后第一时间回复

Django---Django返回用户输入数据的更多相关文章

  1. Django 中的用户认证

    Django 自带一个用户认证系统,这个系统处理用户帐户.组.权限和基于 cookie 的 会话.本文说明这个系统是如何工作的. 概览 认证系统由以下部分组成: 用户 权限:控制用户进否可以执行某项任 ...

  2. django 从零开始 8 用户登录验证 待测

    看文档 djang 自带一个用户登录验证的方法,不过有些看着懵逼,去网上找了一圈,发现很多都是照抄文档说明的,几乎没说啥原理 特别是 from django.contrib.auth import a ...

  3. django rest framework用户认证

    django rest framework用户认证 进入rest framework的Apiview @classmethod def as_view(cls, **initkwargs): &quo ...

  4. django中添加用户

    在django中添加用户,直接在auth_user表中添加会有问题,因为这里密码是加密的,可以通过manage.py shell加入 创建User: 1 >>> from djang ...

  5. Django实现单用户登录

    最近由于要毕业了写论文做毕设,然后还在实习发现已经好久都没有写博客了.今天由于工作需求,需要用Django实现单用户登录.大概意思就是跟QQ一样的效果,每个账号只能一个地方登录使用,限制账号的登录次数 ...

  6. django rest_framework 实现用户登录认证

    django rest_framework 实现用户登录认证 1.安装 pip install djangorestframework 2.创建项目及应用 创建过程略 目录结构如图 3.设置setti ...

  7. django JsonResponse返回中文时显示unicode编码(\u67e5\u8be2)

    django JsonResponse返回中文时显示unicode编码(\u67e5\u8be2) 关注公众号"轻松学编程"了解更多. 原因 这个unicode编码,是python ...

  8. django项目同一用户不能同时登陆

    1.session认证 ..... login(request, user) #登录成功 # 登录之后获取获取最新的session_key session_key = request.session. ...

  9. [django]django xlrd处理xls中日期转换问题

    xlrd会把xls文件中比如20160--03-01类型的时间转换成整数,那么我们如何保证xlrd读取进来的时间为2016-03-01格式呢? 使用xlrd中的xldate_as_tuple函数 代码 ...

随机推荐

  1. HDU4195 Regular Convex Polygon (正多边形、外接圆)

    题意: 给你正n边形上的三个点,问n最少为多少 思路: 三个点在多边形上,所以三个点的外接圆就是这个正多边形的外接圆,余弦定理求出每个角的弧度值,即该角所对边的圆周角,该边对应的圆心角为圆心角的二倍. ...

  2. 机器学习(ML)十之CNN

    CNN-二维卷积层 卷积神经网络(convolutional neural network)是含有卷积层(convolutional layer)的神经网络.卷积神经网络均使用最常见的二维卷积层.它有 ...

  3. Elasticsearch与中文分词配置

    一. elasticsearch on windows 1.下载地址: https://www.elastic.co/cn/downloads/elasticsearch 如果浏览器下载文件慢,建议使 ...

  4. zabbix 自定义监控项报警给单独的人

    需求就是某个交换机的流量达到某个值后需要报警,但报警的内容不是发给所有的人,而是只发给特定的一个人,而其他的报警信息不能让他收到,他只能收到这一个报警项的报警 1:创建好用户定义好手机号 2:新增加一 ...

  5. Java之——23种设计模式汇总

    在软件开发的历程中,正是无数前辈们本着追求完美的架构设计和代码设计的初心.经过无数前辈们的探索和努力,逐渐形成了一系列的设计原则和设计模式. 对于Java语言来说,通常包含有6大设计原则和23种设计模 ...

  6. Swift 枚举-从汇编角度看枚举内存结构

    一.基本使用 先看枚举的几种使用(暂不要问,看看是否都能看懂,待会会逐一讲解) 1.操作一 简单使用 //第一种方式 enum Direction { case east case west case ...

  7. 一招教你轻松使用数据可视化BI软件创建旅游消费数据可视化大屏

    灯果数据可视化BI软件是新一代人工智能数据可视化大屏软件,内置丰富的大屏模板,可视化编辑操作,无需任何经验就可以创建属于你自己的大屏.大家可以在他们的官网下载软件.   本文以旅游消费数据可视化大屏为 ...

  8. MyEclipse10下载安装破解及汉化内含jdk8u241及其帮助文档

    下载MyEclipse10以及破解包 MyEclipse10: 提取码:020c 破解包 提取码:mycj 注:破解包内含有破解教程,很详细,这里就不多说了 MyEclipse10汉化 操作系统:wi ...

  9. mybatis入门的前期准备

    使用步骤如下: 首先创建一个Maven工程,在pom.xml文件中引入mybatis的jar包坐标 <dependencies> <dependency> <groupI ...

  10. PVE裸机虚拟化环境安装之后的一些部署记录

    pve镜像使用的是proxmox-ve_6.1-1 安装之后root登录 apt update 更新源的时候会出现一些问题,是因为其中有一个企业源报错的原因 安装sudo和vim,否则不好管理非roo ...