PS:flask 及github的新手向文章,大神绕路
《flask Web 开发》该书的优势在于 结合作者可以设计的代码仓库,一步步展现一个项目的各个方面的细节,依次来展现flask框架的各个方面,但是本书 没有细致的阐述 flask 框架的语法,重点是阐述flask开发的基本流程,代码阅读起来会感觉逻辑十分混乱,不适合结构图形式的笔记,因此 通过复现书中的代码及仓库的创建过程来学习git及flask,同时记录遇到的语法疑点,进行进一步查证。
环境设置
- 工作目录:
E:\study\evernote\material\flasky2
- 创建本地仓库:
git init
- 添加 git忽略规则
.gitignore
- 添加笔记文件
readme.md
- 创建虚拟环境:
virtualenv venv
,>venv\scripts\activate
, 向.gitignore
添加venv
- 安装 flask:
pip install flask
, 向.gitignore
添加 python 的忽略项*.py[cod] *.so *.egg *.egg-info dist build
第一个完整程序
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1> Hello World !</h1>'
# 路由的基本使用
@app.route('/user/<name>')
def user(name):
return '<h1> Hello %s !</h1>' % name
# 动态路由的基本实现
if __name__ == '__main__':
app.run(debug=True)
- 添加到本地仓库,
git add .
,git commit -m "2a, basic use of route"
上下文对象和url_map
from flask import Flask
from flask import request
app = Flask(__name__)
# 路由的基本用例
@app.route('/')
def index():
# return '<h1> Hello World !</h1>'
# request 请求上下文的使用
# use_agent = request.headers.get('User-Agent')
# return '<h1> Your brower is %s !</h1>' % use_agent
# url_map 的信息
return '<p> url_map is %s !</h1>' % app.url_map
# 动态路由的基本用例
@app.route('/user/<name>')
def user(name):
return '<h1> Hello %s !</h1>' % name
if __name__ == '__main__':
app.run(debug=True)
- 添加到本地仓库,
git add .
,git commit -m "2b, request and url_map"
响应对象 Response 的使用
from flask import Flask
from flask import make_response
app = Flask(__name__)
# 路由的基本用例
@app.route('/')
def index():
# 相应 Response 对象的基本使用
response = make_response( '<h1> This file carries with a cookie !</h1>' )
response.set_cookie('answer','42')
return response
# 动态路由的基本用例
@app.route('/user/<name>')
def user(name):
return '<h1> Hello %s !</h1>' % name
if __name__ == '__main__':
app.run(debug=True)
- Chrome 浏览器查看 cookie 点击 url 左侧的感叹号
- 添加到本地仓库,
git add .
,git commit -m "2c, response object"
重定向对象 redirect 和 abort 的使用
from flask import Flask
from flask import redirect
from flask import abort
app = Flask(__name__)
# 路由的基本用例
@app.route('/')
def index():
# 重定向响应 redirect(url)
return redirect('http://baidu.com')
# 动态路由的基本用例
@app.route('/user/<name>')
def user(name):
if name !='zhang':
# 处理错误的abort 函数的使用
abort(404)
return '<h1> Hello %s !</h1>' % name
if __name__ == '__main__':
app.run(debug=True)
- 添加到本地仓库,
git add .
,git commit -m "2d, redirect and abort"
flask-script 支持命令行选项
- 安装 flask-script:
pip install flask-script
from flask import Flask
from flask_script import Manager
app = Flask(__name__)
manager = Manager(app)
# 路由的基本用例
@app.route('/')
def index():
return '<h1> Hello world !</h1>'
# 动态路由的基本用例
@app.route('/user/<name>')
def user(name):
return '<h1> Hello %s !</h1>' % name
if __name__ == '__main__':
manager.run()
- 指定服务器地址
python hello.py runserver --host localhost
- 添加到本地仓库,
git add .
,git commit -m "2e, flask-script basic"