服务热线:0668-2727150

一级a在线免费观看2019

时间: 2019-09-24 09:12:03 来源:光荣之路 作者:天天编辑 

新书

速递

吴老的java版《selenium webdriver 实战宝典》python版《selenium Webdriver 3.0 自动化测试框架实战指南》出版了,代码拿来就能用。

光荣之路测试开发培训班招生简章

文 | 远山近海

Flask网站制作框架

快速制作网站就是这么容易!
安装:pip install Flask
(1) 快速搭建网站
(2) 自定义URL
(3) 模板实例
(4) 判断与循环
(5) 模板的继承
(6)消息提示
(7)捕获异常




wtforms扩展_第一部分

wtforms是python用来处理表单的类,flask_wtf是对wtforms的又一次封装。
使用前要先安装,pip install Flask-wtf,安装Flask-wtf的同时茂名网站建设,wtforms也被自动安装了。

获取页面表单输入的数据


在模板中输入html标签属性

size属性,控制单行输入框的大小
{{form.变量名称(size=值)}}
例:

1<form method="POST">
2    {{form.username(size=80)}}<br><br>
3    {{form.password(size=50)}}<br><br>
4    {{form.textarea}}<br><br>
5    <input type="submit" value="submit"><br><br>
6</form>>
运行结果:

注意:
  1. size的值不加引号

  2. 此方法仅作用于单行文本,对多行文本textarea无效



POST方法获取

使用xxx=myform.xxx.data来获取页面表单数据

把上例进行修改后得到如下结果:

路由文件:
 1# coding=utf-8
2from flask import Flask,render_template,flash,request,redirect
3from flask_wtf import Form
4import wtforms
5
6app = Flask(__name__) # 创建了一个Flask类的实例
7app.secret_key="123"
8
9class loginform(Form): # 创建一个用于获取html页面数据的类,它必须继承自wtforms类的Form子类
10    username=wtforms.StringField('username'# 设置username,html页面将从这里取数据
11    password=wtforms.PasswordField('password')# 设置password,html页面将从这里取数据
12
13@app.route("/login/",methods=["POST","GET"]) # 用route()装饰器来自定义自己的URL
14def login():
15    myform=loginform(request.form) # 创建loginform类的实例化
16    if request.method=="POST":
17        username=myform.username.data # 通过类的实例化来获取表单中的username值
18        password=myform.password.data # 通过类的实例化来获取表单中的password值
19        if username=="yuanshanjinhai" and password=="123456":
20            return redirect("https://www.baidu.com")
21        else:
22            ErrorMessage="用户名或密码错误"
23            return render_template("login.html",ErrorMessage=ErrorMessage,form=myform)
24    return render_template("login.html",form=myform)
25
26if __name__ == '__main__':
27    app.debug = True
28    app.run(port=8080)
  1. 首先,引入了flask_wtf类中的Form方法,同时还要引入flask_wtfm的基类wtforms类

  2. 创建一个用于获取html页面上数据的类,其中有两个方法:
    username=wtforms.StringField('username') 和
    password=wtforms.PasswordField('password')
    它们分别用来创建用户名输入框和密码输入框
    注意:wtforms中提供很多生成页面元素的方法,这里只用到了字符串文本框和密码文本框,还有诸如下拉框等元素以后会用到

  3. 在视图函数中实例化步骤2里的类,用于获取html页面上的数据

  4. 通过
    username=myform.username.data和
    password=myform.password.data
    这两个方法从html页面上获取输入的数据

  5. render_template()返回页面时要把获取数据类的实例myform传入html页面,而form是固定写法,代表对应页面即login.html的表单,form=myform就是把myform传入login.html的form即表单

  6. 不必考虑一个页面多个表单的情况,因为一个页面只会有一个表单

  7. app.secret_key="123"是防止其他人恶意访问cookie从而获取到用户的session,该部分详见session处理章节

模板文件login.html:
 1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="UTF-8">
5    <title>登录</title>
6</head>
7<body>
8    {% if ErrorMessage %}
9        <h5>{{ErrorMessage}}</h5>
10    {% endif %}
11    <form method="POST">
12        {{form.username}}<br><br>
13        {{form.password}}<br><br>
14        <input type="submit" value="submit"><br><br>
15    </form>
16</body>
17</html>

用户名输入框(文本类型)和密码输入框(密码类型)只要直接用form引入就可以了,其他不变。
运行结果与上例相同。

GET方法获取

模板文件:
1<form action="../person_show_search" method="GET">
2    {{form.searchstring.label}}
3    {{form.searchstring}}
4    <input type="submit" value="查询"><br><br>
5</form>

在这里,form表单里的数据提交方式为GET,此时,输入了数据,点击查询按钮后,被输入的数据会以【? searchstring=XXX】的方式通过地址栏传递到后台的路由文件里对应的视图函数,如在搜索框中输入老师后点击查询按钮,结果如下:

但也有些浏览器,如edge,会自动把GET方法传递的数据做加密茂名工作形象照,结果如下:

写入label

路由文件:
 1# coding=utf-8
2from flask import Flask,render_template,flash,request,redirect
3from flask_wtf import FlaskForm as Form
4import wtforms
5
6app = Flask(__name__) # 创建了一个Flask类的实例
7app.secret_key="123"
8
9class loginform(Form): # 创建一个用于获取html页面数据的类,它必须继承自wtforms类的Form子类
10    username=wtforms.StringField('用户名:'# 设置username,html页面将从这里取数据
11    password=wtforms.PasswordField('密码:')# 设置password,html页面将从这里取数据
12
13@app.route("/element/",methods=["POST","GET"]) # 用route()装饰器来自定义自己的URL
14def login():
15    myform=loginform(request.form) # 创建loginform类的实例化
16    username=myform.username.data # 通过类的实例化来获取表单中的username值
17    password=myform.password.data # 通过类的实例化来获取表单中的password值
18    return render_template("element.html",form=myform)
19
20if __name__ == '__main__':
21    app.debug = True
22    app.run(port=8080)

在这里,类中的变量写成了username=wtforms.StringField('用户名:'),其中用户名三个字就是label内容,之前定义的都是英文,且没有在模板页面中显示它们。

模板文件:
 1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="UTF-8">
5    <title>页面元素</title>
6</head>
7<body>
8    <form method="POST">
9        {{form.username.label}}
10        {{form.username}}<br><br>
11        {{form.password.label}}
12        {{form.password}}<br><br>
13    </form>>
14</body>
15</html>

在模板中,多了{{form.username.label}},这个意思就是把路由文件中类里定义的label名称显示出来

运行结果:

注意到,标签的内容已经显示在了页面元素的前面茂名商品拍摄影报价,查看源码,标签的内容为label标签,用户名和密码输入框的html代码已被flask自动生成,且很规整。

一定要实战呀!




客服 热线 回顶部
日本一级黄一片2019网站地图