第一步先建一个virtualenv。
由于我的机器是有多版本的python,所有我要进入到相应的virtrualenv的目录下面去,建立env环境。
cd c:\Python36\Scripts
virtualenv.exe D:\virtualenv\Flask
D:\virtualenv\Flask\Scripts\activate.bat
在virtualenv中安装Flask模块
pip install Flask
使用pycharm创建一个Flask项目
使用pycharm创建Flask项目非常简单,如图操作:
完成之后就是如图所示
进入Debug模式
app.run(debug=True)
debug模式可以在不重启服务的情况下对页面进行调试,静态页面开发的时候应该会经常用到
导入模板
from flask import Flask,render_template
@app.route('/')
def hello_world():
return render_template('index.html',title='<h1>Welcome!</h1>')
这样就可以指向模板了,之后title作为向模板传递的参数
添加两个页面,且在主页中添加超链接
demo01.py
@app.route('/services')
def services():
return 'Services'
@app.route('/about')
def about():
return 'About'
index.html
<body>
<h1>{{ title }}</h1>
<a href="{{ url_for('.services') }}">services</a>
<a href="{{ url_for('.about') }}">about</a>
</body>
路由器转换器
@app.route('/user/<int:user_id>')
def user(user_id):
return 'User %d' % user_id
int -整型
float-浮点数
path-路径
仔细观察以下代码,Flask设计很友好
@app.route('/projects/')
@app.route('/our-work/')
def projects():
return 'The projects page'
官方解释是这个:
规范的 URL 指向 projects 尾端有一个斜线。 这种感觉很像在文件系统中的文件夹。访问一个结尾不带斜线的 URL 会被 Flask 重定向到带斜线的规范URL去。
当用户访问页面时忘记结尾斜线时,这个行为允许关联的 URL 继续工作, 并且与 Apache 和其它的服务器的行为一致。另外,URL 会保持唯一,有助于避免搜索引擎索引同一个页面两次。
故在项目中都采用带'/'模式。
为什么构建 URLs 而不是在模版中硬编码?
这里有三个好的理由:
反向构建通常比硬编码更具备描述性。更重要的是,它允许你一次性修改 URL, 而不是到处找 URL 修改。
构建 URL 能够显式地处理特殊字符和 Unicode 转义,因此你不必去处理这些。
如果你的应用不在 URL 根目录下(比如,在 /myapplication而不在 /), url_for()将会适当地替你处理好。
Flask 请求上下文与响应make_response
make_response可以定制response的高级内容,例如cookie
from flask import make_response
@app.route('/')
def hello_world():
response = make_response(render_template('index.html', title='Welcome!'))
response.set_cookie('username','')
return response
Flask-Script,livereload模块使用
Flask-Script 项目重构的时候经常用到
livereload 没啥用,就是写静态文件的时候方便一点,自动刷新,不过好像要加一个chrome插件,没配成功,懒得弄。