1.简单程序(hello.py)
from flask import Flask
app = Flask(__name__) # 创建Flask对象
.route('/') # url路由,装饰器
def hello_world():
return 'Hello, World!'
2.服务器开启(控制台)
-
设置环境变量(win环境set)
set FLASK_APP=hello.py -
运行服务器
flask run90 -
改进(代码修改后自动重启服务器):
set FLASK_ENV=developmentflask run还是很麻烦啊!!!!!!!!!,那就这样呗
from flask import Flask
app = Flask(__name__) # 创建Flask对象
.route('/') # url路由,装饰器
def hello_world():
return 'Hello, World!'
if __name__ == "__mian__":
app.run(debug=True)
3.变量规则(<>)
正则匹配,限制参数输入。匹配失败url无效。
-
缺省(默认是string,但是不能有斜杠)
.route('/user/<username>')
def get_username( username ):
return "username: "+username
# http://127.0.0.1:5000/user/陈墨 -
规定数据类型(int)
.route('/age/<int:age>')
def get_age(age):
return "age is int : " + str(age)
# http://127.0.0.1:5000/age/21 -
多个变量(2个)
@app.route('/people/<string:name>/<int:age>')
def get_people(name, age ):
return "name: %s, age %s! " %(name, age )
# http://127.0.0.1:5000/people/陈墨/24
*4.刻骨铭心的——唯一的 URL / 重定向行为
-
前奏,两个路由函数:
-
照本宣科,浏览器请求 :
-
127.0.0.1:5000/projects: 服务端没有匹配到projects,服务器加’/‘,重定向projects/
-
127.0.0.1:5000/about: 匹配到about,正常回复浏览器
-
简而言之一句话: 初次匹配失败,加’/‘再匹配;再失败,拜拜
-
-
意外之事: 浏览器硬缓存捣蛋
-
首次请求127.0.0.1:5000/projects, 由于重定向浏览器再次请求127.0.0.1:5000/projects时,浏览器自动替换成127.0.0.1:5000/projects/
-
-
redirect() 重定向到其他的url
-
about() 中断请求并带错误信息
5.url构造 --
6.http方法
缺省情况是get请求
-
服务端程序:
from flask import Flask, request
app = Flask( __name__ )
.route("/", methods=['GET','POST'] ) # 测试1 ,
def test_http():
return str( request.method )
.route("/get")# 测试2,缺省为get
def test_get():
return "only get " -
http请求:
# 测试1
a = requests.get( "http://127.0.0.1:5000/") # 通过
print a.content
b = requests.post( " http://127.0.0.1:5000/") # 通过
print b.content
# 测试2
c = requests.get(" http://127.0.0.1:5000/get")# 通过
print c.content
d = requests.post(" http://127.0.0.1:5000/get") # 失败,路由是get
print d.content -
请求对象:
-
post:
-
if request.method == 'POST': # post请求
form = request.values # 表单
name = form["name"] # 表单元素
age = form["age"]
return "post-----> name: %s, age:%s=d" % (name, age )
-
-
get:
-
# 请求网站 http://127.0.0.1:5000/post?name=chenyangyang&age=24
name = request.args.get("name") # 取name的值
age = request.args.get("age") # 取age的值
return "get-----> name %s, age:%s " %( name, age )
-
-
7.不能错的文件名——渲染模板、静态文件、ur构造
-
渲染模板a
-
程序同目录下创建 ”templates“文件夹, html文件位置。
-
程序代码:
render_template( "/test_01.html" ) # 程序自动在templetes文件夹下寻找 ![]()
-
-
-
静态文件
-
程序同目录下创建”static“文件夹,存放静态文件
-
html页面中使用url_for构造url使用。
-
-
-
url构造的使用
-
8.cookies
@app.route("/cookies") # 第一次访问设置cookies,
def set_cookies():
ret = make_response("hello") # 创建响应体对象
ret.set_cookie("home","甘肃") # 设置cookies
return ret
@app.route("/cookies2") # 第二次访问使用cookies
def set_cookies2():
name main= request.cookies.get("home","无家可归的浪子") # 获取cookies,cookie不存在则返回后面参数
ret = make_response(name)
return ret
9.session
10
+ 结合布局模板实现的用户反馈机制
+ 多种消息
+ 消息过滤显示
11.日志


浙公网安备 33010602011771号