tornado之表单和模板

之前在indexHandler中通过self.write()方法在对应的网页中写入具体的字符信息。 如果我们想直接返回一个网页那么这个时候就需要用到模板了

首先在工程目录下新建一个template文件夹。然后在Application中引用该文件夹的地址。template_path参数告诉Tornado在哪里寻找模板文件。下面的代码告诉Python在你Tornado应用文件同目录下的templates文件夹中寻找模板文件。

app = tornado.web.Application(handlers=[(r"/", indexHandler),(r"/show",showHandler)],template_path=os.path.join(os.path.dirname(__file__),"template"),)

然后在template文件下面新建一个index.html文件。内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8http://127.0.0.1:8000/">
    <title>tornada测试</title>
</head>
<body>
<p>欢迎来到tornado</p>
</body>
</html>

一旦我们告诉Tornado在哪里找到模板,我们可以使用RequestHandler类的render方法来告诉Tornado读入模板文件,插入其中的模版代码,并返回结果给浏览器

修改indexHandler的get函数。改成return self.render(‘index.html’)

class indexHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        return self.render(‘index.html‘)

此时再在浏览器中输入http://127.0.0.1:8000/得到如下的输出

再来看下如何从网页中传递数据到后端。我们首先需要在html中构造传递数据的页面。网页改成如下,在这里需要输入名字,年龄,城市,工作。填完后会自动跳转到/show的页面

<body>

<h1>填入下面的信息</h1>
<form method="post" action="/show">
<p>你的名字<br><input type="text" name="name"></p>
<p>你的城市<br><input type="text" name="city"></p>
<p>你的年龄<br><input type="text" name="age"></p>
<p>你的工作<br><input type="text" name="job"></p>
<input type="submit">
</form>

</body>

输入http://127.0.0.1:8000/后的页面如下,点击提交查询后会显示输入的信息。传递参数的方法是post

对应的增加showHandler的函数,定义post函数使用get_argument获取网页传递的参数,最后通过render函数跳转到/show的界面。并传递获取到的参数

class showHandler(tornado.web.RequestHandler):
    def post(self, *args, **kwargs):
        name=self.get_argument(‘name‘)
        age=self.get_argument(‘age‘)
        city=self.get_argument(‘city‘)
        job=self.get_argument(‘job‘)
        self.render(‘show.html‘,name=name,age=age,city=city,job=job)

下面再来看下show.html界面,传递的参数通过{{}}方式来引用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>信息展示</title>
</head>
<body>
<h1>你的信息</h1>
<p>你的名字是{{name}}</p>
<p>你的名城市在{{city}}</p>
<p>你的年龄{{age}}</p>
<p>你的工作是{{job}}</p>
</body>
</html>

最终得到的界面如下

接下来看下如果通过引用静态文件来渲染模板。在django章节中我们介绍给在django中引用bootstrap来渲染页面。在tornado中通过也可以引用。

第一步:首先在项目中新建一个static文件夹,并将下载的bootstrap文件放在这个文件夹下面

第二步:在Application添加静态文件的引用路径

tornado.web.Application(handlers=[(r"/", indexHandler),(r"/show",showHandler)],template_path=os.path.join(os.path.dirname(__file__),"template"),                           static_path=os.path.join(os.path.dirname(__file__),"static"),)

第三步:在show的head中引用bootstrap

<head>

<meta charset="UTF-8">

<title>信息展示</title>

<link href="/static/css/bootstrap.min.css" rel="stylesheet">

<link href="/static/css/bootstrap.css" rel="stylesheet">

<script src="/static/js/bootstrap.min.js"></script>

<script src="/static/js/bootstrap.js"></script>

<script src="/static/js/jquery-3.2.1.min.js"></script>

</head>

此时的页面显示如下

在tornado工程中也可以看到获取bootstrap的打印

[I 171208 10:18:56 web:2063] 200 GET /static/js/bootstrap.min.js (127.0.0.1) 2.66ms

[I 171208 10:18:56 web:2063] 200 GET /static/js/bootstrap.js (127.0.0.1) 2.57ms

[W 171208 10:18:56 web:2063] 200 GET /static/js/jquery-3.2.1.min.js (127.0.0.1) 51.24ms

 
时间: 2024-08-30 15:03:07

tornado之表单和模板的相关文章

第二章:表单和模板

在第一章中,我们学习了使用Tornado创建一个Web应用的基础知识.包括处理函数.HTTP方法以及Tornado框架的总体结构.在这章中,我们将学习一些你在创建Web应用时经常会用到的更强大的功能. 和大多数Web框架一样,Tornado的一个重要目标就是帮助你更快地编写程序,尽可能整洁地复用更多的代码.尽管Tornado足够灵活,可以使用几乎所有Python支持的模板语言,Tornado自身也提供了一个轻量级.快速并且灵活的模板语言在tornado.template模块中. 2.1 简单示例

Python Tornado初学笔记之表单与模板(一)

Tornado中的表单和HTML5中的表单具有相同的用途,同样是用于内容的填写.只是不同的是Tornado中的表单需要传入到后台,然后通过后台进行对模板填充. 模板:是一个允许嵌入Python代码片段的HTML文件. 一.简单模板示例: Python主程序: import os.path import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web from tornado.op

第一篇,js表单验证模板

下面是对于一个email的表单验证的基本模板<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <style type="text/css" > .init{ border: 1px solid black; font-weight: bold; } .right{ border: 1px solid green; f

Angular 2 + 折腾记 :(7) 初步了解表单:模板驱动及数据驱动及脱坑要点

前言 表单在整个系统中的作用相当重要,这里主要扯下响应表单的实现方式. 首先需要操作表单的模块引入这两个模块: import { FormsModule, ReactiveFormsModule } from '@angular/forms'; 表单控件响应的几种状态 模板驱动表单依赖FormsModule,数据驱动的表单依赖FormsModule,ReactiveFormsModule 一般做表单校验及操作推荐用数据驱动的方式,好维护和理解.. 模板驱动 模板驱动:主要是依赖[(ngModel

表单验证模板

<html> <head> <script src="check.js"></script> <style> span{ font-size:12px; } .stats1{ color:#aaa; <!-- 默认灰色 --> } .stats2{ color:#000; } .stats3{ color:red; } .stats4{ color:green; } </style> </head

HTML各种表单元素模板及写法

input中有很多属性type="text"表示文本框:name是连接前端后端的桥梁value属性,包含的默认字符串size宽度maxlength接受的最多字符数placeholder占位符required必填属性比如写账号和密码框时可以这么写: 账号: <input type="text" name="username" value="" size="30" maxlength="6&qu

Html5添加超酷响应式表单美化模板插件教程

一.Html结构 <form class="cbp-mc-form"> <div class="cbp-mc-column"> <label for="first_name">First Name</label> <input type="text" id="first_name" name="first_name" placehol

织梦dedecms网站给自定义表单加dede模板自带验证码的方法。

有时候,我们因为需要给dede网站的自定义表单添加验证码,防止恶意填写表单提交. 我们可以用以下的方法来实现: 首先,我们要找到 /plus/diy.php 这个文件 在头部引入文件: require_once(DEDEINC.'/membermodel.cls.php'); 然后找到 elseif($do == 2) {  在这个地方加入代码块 //验证码验证 $svali = GetCkVdValue(); if(preg_match("/1/",$safe_gdopen)){ i

表单布局和页面布局

一.表单布局 1.简单的表单布局 <style> //将浏览器默认的样式清零 input { padding: 0; margin: 0; width: 20em; } //由于input[type="text"]设置了宽度,所以不能给单选和复选等表单元素设置宽度 input[type="radio"] { width: auto; margin: 0 1em 0 0; } input[type="checkbox"] { width