from flask import Flask
app = Flask(__name__)
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
二.路由请求方式的限定
# coding:utf-8
from flask import Flask
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
return 'Hello World!'
if __name__ == '__main__':
app.run()
三.路由参数的处理
# coding:utf-8
from flask import Flask
app = Flask(__name__)
# 当为int:时,限制只有可以转化成int的参数能找到
def hello_someone(some_num):
return 'hello %s' % some_num
if __name__ == '__main__':
app.run()
Jinja2的设计思想源于Django的模板引擎
Flask提供的render_template封装了Jinja2模板引擎
使用render_template
# coding:utf-8
from flask import Flask, render_template
app = Flask(__name__)
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run()
涉及到的index.html, 路径:项目名/templates/index.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
请开始你的表演
</body>
</html>
五.模板中的变量代码块
定义字符串,list,dict等参数
# coding:utf-8
from flask import Flask, render_template
app = Flask(__name__)
def index():
url = 'www.python.org'
pythons = ['python2', 'python3']
param_dict = {'system': 'windows'}
return render_template('index.html', python_url=url, pythons=pythons,
param_dict=param_dict)
if __name__ == '__main__':
app.run(debug=True)
涉及到的html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
请开始你的表演<br>
<hr>
python官网<br>
{{ python_url }}<br>
<hr>
get python<br>
{{ pythons[1] }}{# pythons.1也可以 #}
<hr>
get system<br>
{{ param_dict['system'] }}<br>
{{ param_dict.system }}<br>
<hr>
{# 这是一些注释 #}
</body>
</html>
页面展示
{
{% if pythons %}
{{ python_url }}
{% endif %}
{% for python in pythons %}
{{ python }}
{% endfor %}
<hr>
链式调用<br>
{{ 'hello world' | reverse | upper }}<br>
{{ "hello world" | reverse | upper }}<br>
<hr>
safe: 禁用转义,是否解析标签<br>
<p>{{ '<em>hello</em>' | safe }}</p>
<hr>
capitalize: 变量首字母大写<br>
{{ 'hello world' | capitalize}}<br>
<hr>
title: 每个单词首字母大写<br>
{{ 'hello world' | title}}<br>
<hr>
upper: 全部字母变大写<br>
{{ 'hello world' | upper}}<br>
<hr>
lower: 全部字母变小写<br>
{{ 'HELLO world' | lower}}<br>
<hr>
reverse: 反转<br>
{{ 'hello world' | reverse}}<br>
<hr>
format: 格式化输出<br>
{{ '%s %d' | format('name', 123)}}<br>
<hr>
striptags: 渲染之前把值中所有的HTML标签都删掉<br>
{{ '<em>hello</em>' | striptags}}<br>
<hr>
truncate: 字符串截断 用法还不是很清楚<br>
{{ 'hello world' | truncate(5)}}<br>
<hr>
<hr>
<h1>list的操作</h1><br>
first: 取列表第一个<br>
{{ [1,2,3,4] | first }}<br>
<hr>
last: 取列表最后一个<br>
{{ [1,2,3,4] | last }}<br>
<hr>
length: 获取列表长度<br>
{{ [1,2,3,4] | length }}<br>
<hr>
sum: 列表数据求和<br>
{{ [1,2,3,4,9,9,6] | sum }}<br>
<hr>
sort: 排序列表<br>
{{ [1,2,3,4,9,9,6] | sort }}<br>
<hr>
filter函数<br>
{% filter upper %}
fadfasrew
{% endfilter %}
效果
from flask import Flask, render_template, request, flash
app = Flask(__name__)
app.secret_key = 'xiangyingxiongzhijing'
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
username = request.form.get('username')
password = request.form.get('password')
password2 = request.form.get('password2')
if not all([username, password, password2]):
flash('param error')
elif password != password2:
flash('password 不一致')
else:
return '登陆成功'
return render_template('normal_form.html')
if __name__ == '__main__':
app.run(debug=True)
涉及到的页面
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Normal Form</title>
</head>
<body>
<form method="post">
<label>用户名:</label><input type="text", name="username"><br>
<label>密码:</label><input type="password" name="password"><br>
<label>确认密码:</label><input type="password" name="password2"><br>
<input type="submit" value="提交"><br>
{% for message in get_flashed_messages() %}
{{ message }}
{% endfor %}
</form>
</body>
</html>
九. 今日摘抄
"一个民族之所以伟大"
"根本就在于"
"在任何困难和风险面前"
"都从来"
"不放弃"
"不退缩"
"不止步"