html表单和flask

1, 何谓表单?

表单是HTML页面中负责数据采集功能的部件。它往往由三个部分组成,即表单标签、表单域、表单按钮。我们可以通过表单,将用户输入的数据提交给服务端,并交由服务端进行处理。

表单标签

  • 用于声明表单的范围,位于表单标签中的元素将被提交
  • 语法:<form></form>
  • 属性:Method,Enctype,action...

表单域

  • 表单域包含了文本框,密码框等多种类型
  • 语法:<input />
  • 属性: type,name,value.

表单域的种类

  • 文本框<...type = text>
  • 密码框<...type=password>
  • 文本区域<...type=textarea>
  • 文件上传框<...type=file>
  • 单选框<...type =radio>
  • 复选框<...type=checkbox>
  • ......

表单按钮

  • 提交按钮
  • 复位按钮
  • 般按钮

2, 表单的提交方式

GET和POST

  • GET方式通过URL提交数据,数据在URL中可以看到
  • POST方式,数据放置在HTML Header中提交
  • 例如:GET方式: www.baidu.com/?wd=value
  • POST方式:在HTTP头中提交wd=value

两种提交方式的区别

  • GET请求可以被浏览器缓存
  • POST所请求的URL可以被缓存,但数据不会被缓存
  • POST请求不便于分享
  • POST请求没有长度限制
  • GET请求的数据暴露在URL中,会带来一些安全问题

GET方式的适用场合

  • 单纯的请求数据,不进行其他操作
  • 表单数据较短,不超过1024个字符
  • 对安全性要求—般的场合

POST方式适用的场合

  • 数据不仅仅用于请求,例如,需要将数据插入数据库内
  • 表单数据过长时
  • 要传送的数据不是ASCII编码

文件: index.html

<html>
<head>
	<script type="text/javascript" src="checkValue.js"></script>
</head>
<body>
	<form name="form1">
		<input type="text" placeholder="Text" name="text1" />
		<input type="password" placeholder="password" name="password" />
		<textarea placeholder="Textarea" name="textarea" style="resize:none"> </textarea>
		<input type="file" name="file" /> 
		<input type="radio" name="Option" value="Option1" />Option 1
		<input type="radio" name="Option" value="Option2" />Option 2
		<input type="checkbox" name="check" value="Option1" />Option 1
		<input type="checkbox" name="check" value="Option2" />Option 2

		<input type="submit" value="Submit" />
		<input type="reset" value="Reset"/>
		<input type="button" value="button" onclick="getValue()"/>
	</form>
</body>
</html>

与index痛目录的文件:checkValue.js

// 获取text文本和passwod的输入框
// function getValue(){
// 	var text=document.form1.text1.value;
// 	alert(text);
// 	alert(document.form1.password.value);
// }

// 获取单选框的值
// function getValue(){
// 	var text=document.form1.Option.value;
// 	alert(text);
// }

// 获取复选框的值,有点问题,没法获取选中的
function getValue(){
	var arr=document.form1.check;
	alert(arr[0].value);
	// alert(arr[1].value);
	// alert(arr);
}

flask表单开发案例

main.py

from flask import Flask
from flask import request
from flask import render_template
from flask import redirect

app=Flask(__name__)

from wtforms import Form,TextField,PasswordField,validators


class LoginForm(Form):
	username = TextField("username",[validators.Required()])
	password = PasswordField("password",[validators.Required()])


@app.route("/user",methods=['GET','POST'])
def login():
	myForm = LoginForm(request.form)
	if request.method=='POST':
		if myForm.username.data=="jikexueyuan" and myForm.password.data=="123456" and myForm.validate():
			return redirect("http://www.jikexueyuan.com")
		else:
			message="Login Failed"
			return render_template('index.html',message=message,form=myForm)
	return render_template('index.html',form=myForm)


if __name__=="__main__":
	app.run(port=8080,debug=True)

文件: /templates/index.html

<html>
<head></head>
<body>
	<div align="center">
	<h1>User Management</h1>
	{% if message %} {{message}} {% endif %}
	<form method="post">
		Username :{{form.username}}
		<br/>
		Password :{{form.password}}
		<br/>
		<input type="submit" value="Submit" />
		<input type="reset" value="reset" /> 
	</form>
</div>
</body>
</html>

flask开发的加法器

文件: index.py

from flask import Flask
from flask import render_template
from flask import redirect
from flask import url_for
from flask import request

app=Flask(__name__)

@app.route('/')
def index():
	return redirect(url_for('add'))

@app.route('/add',methods=['GET','POST'])
def add():
	if request.method =="POST":
		a=request.form['adder1']
		b=request.form['adder2']
		a=int(a)
		b=int(b)
		sum=a+b
		return render_template('index.html',adder1=str(a),adder2=str(b),message=str(sum))
	return render_template('index.html')

if __name__=='__main__':
	app.run(port=8080)

文件: templates/index.html

<html>
	<head>
	<script src ="cal.js" type="text/javascript"></script>
	<title>Calculator</title>
	</head>
	<body>
		<div align="center" style="margin-top:40px">
		<img src="{{url_for('static',filename='add.png')}}"><br>
		</div>
		<div align="center" style="margin-top:60px">
			<form name="form1" method='POST'>
					<input type="text" placeholder="加数" name="adder1" class="form-control" value="{{adder1}}">
					+
					<input type="text" placeholder="被加数" name="adder2"  class="form-control" value="{{adder2}}">
					=
					<input type="text" placeholder="总数" name="sum" readonly="readonly" class="form-control" value="{{message}}">
				<input type="submit" class="btn btn-lg btn-info" value="计算">
			</form>
		</div>
	</body>
	<footer>
		
	</footer>
</html>

文件: static/add.png

加法器的样式:

写入自己的博客中才能记得长久
原文地址:https://www.cnblogs.com/heris/p/14656644.html