-00- 初识Flask
中文文档:http://docs.jinkan.org/docs/flask/
英文文档:http://flask.pocoo.org/docs/0.12/
-01- 第一个Flask程序
# -*- coding: utf-8 -*-
#1.导入Flask扩展
from flask import flask
#2.创建应用程序实例
#需要传入_name_,作用是为了确定资源所在的路径
app = Flask(_name_)
#3.定义路由及视图函数
#Flask中定义路由器是通过装饰器实现的
@app.route('/')
def index():
return 'hello flask'
#4.启动程序
if __name__ == '__main__':
#执行app.run,就会将Flask程序运行在一个简易的服务器(Flask提供的,用于测试的)
app.run()
-02- 路由请求方式限定(权限规定)
#默认只支持GET请求,如果需要用其他请求,需要自行添加。
#用postman进行接口请求测试,测试网址可以使用www.tianqiapi.com。
@app.route('/',methods=["GET", "POST"])
def index():
return 'hello flask'
-03- 路由参数处理(翻书操作)
#同一视图函数传入不同的参数
#<>定义路由的参数,<>内需要起个名字
@app.route('/orders/')
def get_order_id(order_id):
#参数类型,默认是字符串
print type(order_id)
#需要在视图函数的括号内填入参数名字,后面的代码才能使用
return 'order_id %s' % order_id
#有的时候,需要对路由做访问优化,订单ID应该是int类型
@app.route('/orders/')
-04- Jinja2模板引擎
如何返回一个网页(模板)
# *-*coding:utf-8*-*
from flask import Flask,render_template
app = Flask(__name__)
#1.如何返回一个网页(模板)
@app.route("/")
def index():
return render_template("index.html")
if __name__ == '__main__':
app.run()
如何给模板填充数据(服务器动态计算)
首先要新建一个HTML文件,作为网站的首页。然后在主程序中import函数render_template来对HTML进行渲染,render_template函数的第一个参数是模板文件名,后面的参数都是键值对,表示模板中变量对应的真实值。
# *-*coding:utf-8*-*
from flask import Flask,render_template
app = Flask(__name__)
#2.如何给模板填充数据(服务器动态计算)
@app.route("/")
def index():
#比如需要传入网址
url_str = 'www.baidu.com'
return render_template("index.html",url_str=url_str)#前面是值,后面是名字
if __name__ == '__main__':
app.run()
用键值对传入参数,然后在HTML文件中用两个花括号来使用这个变量。
Title
这是一个模板
这是一个标签
{{ url_str }}
-05- 变量代码块的使用
在Jinja2中,使用{# #}进行注释,快捷键Ctrl + /
使用{{ }} 来表示变量名,这种语法叫做变量代码块
def index():
#比如需要传入网址、列表、字典
url_str = 'www.baidu.com'
my_list = [1, 2, 3, 4]
my_dict = {"name": "zyt", "keywords":"lucky" }
#通常模板中使用的变量名和要传递的数据的变量名保持一致
return render_template("index.html",url_str=url_str,my_list=my_list,my_dict=my_dict)
这是一个模板
这是一个标签
{#下面是一个变量代码块的使用#} {{ url_str }}
{# 列表的使用#} {{ my_list }}
{{ my_list.2 }}
{{ my_list[2] }}
{# 字典的使用#} {{ my_dict }}
{{ my_dict.name }}
{{ my_dict["name"] }}
-06- 控制代码块的使用
{#for循环的使用,建议写先写for,然后按住tab进行补全} {% for num in my_list %} {#数据大于3,才能显示#} {% if num >3 %} {{ num }}
{% endfor %} {% endfor %}
-07- 过滤器的使用
常见内建过滤器
safe:禁用转义
capitalize:单词的首字母大写
lower和upper:大小写转换
title:一句话中每个单词的首字母大写
reverse:翻转
truncate:字符截断
{# 过滤器 #} {# 字符串变大写 #} {{ url_str | upper }}
{# 字符串反转 #} {{ url_str | reverse }}
{# 过滤器的链式调用 #} {{ url_str |upper| reverse }}
-08- 普通的表单验证
在html页面中直接写form表单
视图函数中获取表单数据
# *-*coding:utf-8*-*
from flask import Flask,render_template,request
app = Flask(__name__)
'''
目的:实现一个简单的登录的逻辑处理
1.路由需要有get和post两种请求方式————>需要判断请求方式
2.获取请求参数
3.判断参数是否填写 & 密码是否相同
4.如果判断都没有问题,就返回一个success
'''
@app.route("/",methods=['get','post'])
def index():
#request:请求对象 ————> 获取请求方式、数据
#1.判断请求方式
if request.method =='post':
return 'success'
#2.获取请求参数
username = request.form.get('username')
password = request.form.get('password')
password2 = request.form.get('password2')
#3.判断参数是否填写 & 密码是否相同
if not all([username,password,password2]):
print '参数不完整'
elif password != password2:
print '密码不一致'
else :
return 'success'
return render_template("index.html")
if __name__ == '__main__':
app.run()



