一直想做一整套的智能家居,顺便当作毕业设计,其中就有一个控制端,要能用web控制,安卓端控制。就选择了学这。写这个,记录一下。学的书是Flask Web开发 基于python的web应用开发实战【美】Miguel Grinberg著,安道译。
首先介绍一下。Flask是一个使用python编写的web应用框架。
使用的是python3.6,IDE是pychrm。
首先呢,要新建一个项目,再设置,再Projrct Interpreter中增加所需要的package。flask是必须的鸭。
初始化
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)然后运行,点击127.0.0.1:5000会出来一个网页,显示Hello World。
更改地址为127.0.0.1:5000/user/Bee
(Bee可以更改为别的名字),会出现Hello, Bee!
接下来是模板。Jinja2模板引擎
这个需要增加render_template
from flask import Flask,render_template app = Flask(__name__) @app.route('/') def index(): return render_template("index.html") @app.route('/user/<name>') def user(name): return render_template('user.html',name=name) if __name__ == '__main__': app.run(debug=True)模板文件实在templates中,需要自己创建模板文件。一个是index.html内容是
<h1>Hello World</h1>另一个是user.html,内容是
<h1>Hello,{{name}}!</h1>运行后效果其实跟第一个是一样的。
render_template函数的第一个参数是模板的文件名,随后的参数就是健对值。在这个例子中,就是收到一个名为name的变量。左边的name表示参数名,右边的name表示同名参数的值。
变量:
在模板中使用的{{name}}结构表示一个变量,是一种特殊的占位符,告诉模板引擎这个位置的值从渲染模板时使用的数据中获取
Jinja2变量的过滤器
过滤器名说明safe渲染值时不转义capitalize把值的首字母转换为大写,其他字母转换为小写lower把值转换成小写形式upper把值转换成大写形式title把值中每个单词的首字母都转换成大写trim把值的首尾空格去掉striptags渲染之前把值中所有的HTML标签都删掉默认情况下,出于安全考虑,Jinja2会转义所有变量。
控制结构。抄下几个例子。
条件控制语句
{% if user %} Hello,{{ user}}! {% else %} Hello, Stranger! {% endif %}for循环
<ul> {% for comment in comments %} <li>{{comment}}</li> {% endfor %} </ul>宏(没搞清楚)就不写上了。
接下来是使用Flask-Bootstrap需要在设置里面安装。首先依旧是导入,初始化
from flask_bootstrap import Bootstrap from flask import Flask,render_template app=Flask(__name__) bootstrap = Bootstrap(app)遇到一些问题,先写这么多。
