一、Flask框架
如果是copy别人的网页,则将js/css等文件放入static文件夹,静态网页放入templates文件夹。然后在网页中,选中css/ 或者要改的路径的前缀(这里多一个/是因为避免修改了后缀),然后CTRL+R,就会在上方出现两个文本框,第一个显示 css/ ,第二个就开始修改为static/css/,然后选择Replace all。全部修改。
1.1 首先启动Debug模式。
这样就不用每一次修改就重启服务器(每一次修改记得保存再去网页刷新)。
** 而且可以在浏览器就能帮助你快速锁定错误的位置**。
1.2 app.py
from flask import Flask,render_template,request
import datetime
app = Flask(__name__)
# 记得先将Debug模式开启,就不用每次重启服务器,而且有错误的话,会在浏览器直接显示错误的位置;
# **************************************************
# 路由解析:通过用户访问的路径,匹配相应的函数(路由路径一定不能重复,
#用户通过特定的路径访问不同的函数)
# 1.通过访问路径,自动识别获取用户的字符串参数
# @app.route('/user/<name>')
# def welcom1(name):
# return '你好,%s'%name
#
# # 2.通过访问路径,自动识别获取用户的整形参数(或者float参数)
# @app.route('/user/<int:id>')
# def welcom2(id):
# return '欢迎,%d号会员'%id
# **************************************************
# 进行html操作(from flask import Flask,render_template)
# 在templates中创建index.html
# 返回给用户渲染过的文件。
# @app.route("/")
# def index():
# return render_template("index.html")
# 实现动态:向页面传递一些变量。
@app.route("/")
def index():
now_time = datetime.date.today() # 普通变量
list = ["小张","小李","小王"] # 列表
task = {"任务":"打扫卫生","时间":"3小时"} # 字典类型
return render_template("index.html",time = now_time,list = list,task = task)
# 实现表单提交 在templates下,创建test文件夹,创建register.html
@app.route('/test/register')
def register():
return render_template("test/register.html")
# 如果接收端要接收表单提交的路由,需要指定methods,否则出现(The method is not allowed )
@app.route('/result',methods=['POST','GET'])
def result():
# 导入包(request)
if request.method == 'POST':
result = request.form
return render_template("test/result.html",result = result)
# else:
# print("do else things")
if __name__ == '__main__':
app.run()
1.3 index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>主页</title>
</head>
<body>
<a href="test/register">进入注册</a>
<h1>欢迎光临,今天是{{ time}}</h1>
今天值班的有:</br>
<!--用大括号和百分号括起来的是控制结构,还有if也可以。-->
{% for data in list %}
<li>{{ data }}</li>
{% endfor %}
任务:</br> <!--如何在页面打印表格,以及如何迭代-->
<table border="1">
<!--使用task.items()后 就变成了列表 :[(key,value),(key,value),(key,value)....] -->
{% for key,value in task.items() %}
<tr>
<td>{{ key }}</td>
<td>{{ value }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
1.4 register.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--使用url_for直接指定要处理的路由-->
<form action="{{ url_for('result') }}" method="post">
<p>姓名:<input type="text" name="name"></p>
<p>年龄:<input type="text" name="age"></p>
<p>性别:<input type="text" name="sex"></p>
<p>地址:<input type="text" name="address"></p>
<p><input type="submit" value="提交"></p>
</form>
</body>
</html>
1.5 result.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table border="1">
<!--使用task.items()后 就变成了列表 :[(key,value),(key,value),(key,value)....] -->
<th>姓名</th> <th>年龄</th> <th>性别</th> <th>地址</th>
<tr>
{% for key,value in result.items() %}
<td>{{ value }}</td>
{% endfor %}
</tr>
</table>
</body>
</html>