Flask简单学习
一:安装
直接 pip install Flask,就可以安装好了
二:hello world
编写一个hello.py
# coding: utf-
from flask import Flask
app = Flask(__name__) @app.route('/')
def hello_world():
return 'Hello world' if __name__ == '__main__':
app.run()
然后在python解析器下运行
$ python hello.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
在浏览器上访问 http://127.0.0.1:5000/
然后就会出现 Hello world
1:上面有一个route的装饰器告诉Flask什么样的URL访问能触发这个函数
2: app.run() 这个也可以绑定具体的host和port
三:路由
如上面的程序,route() 装饰器把一个函数绑定到了对应的URL上了
基本用法:
# coding: utf-
from flask import Flask app = Flask(__name__) @app.route('/')
def hello_wold():
return 'Hello world' if __name__ == '__main__':
app.run()
变量规则:
要给 URL 添加变量部分,你可以把这些特殊的字段标记为 <variable_name> , 这个部分将会作为命名参数传递到你的函数。规则可以用 <converter:variable_name> 指定一个可选的转换器
# coding: utf-
@app.route('/user/<username>')
def show_user_profile(username):
# show the user profile for that user
return 'User %s' % username @app.route('/post/<int:post_id>')
def show_post(post_id):
# show the post with the given id, the id is an integer
return 'Post %d' % post_id
构造URL:
编写一个名为 cons_url.py的程序
# coding: utf-
from flask import Flask, url_for
app = Flask(__name__)
@app.route('/')
def index(): pass @app.route('/login')
def login(): pass @app.route('/user/<username>')
def profile(username): pass with app.test_request_context():
print url_for('index')
print url_for('login')
print url_for('login', next='/')
print url_for('profile', username='John Doe')
在命令行下运行程序,输出
$ python cons_url.py
/
/login
/login?next=%2F
/user/John%20Doe
HTTP方法:
默认情况下,路由只回应 GET 请求,但是通过 route() 装饰器传递 methods 参数可以改变这个行为
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
do_the_login()
else:
show_the_login_form()
四:模板渲染
Flask 配备了 Jinja2 模板引擎
你可以使用 render_template() 方法来渲染模板
# coding: utf-
from flask import render_template @app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
return render_template('hello.html', name=name)
Flask 会在 templates 文件夹里寻找模板。所以,如果你的应用是个模块,这个文件夹应该与模块同级;如果它是一个包,那么这个文件夹作为包的子目录:
情况 : 模块:
/application.py
/templates
/hello.html 情况 : 包:
/application
/__init__.py
/templates
/hello.html
更多模板请到:http://docs.jinkan.org/docs/jinja2/
五:重定向:
# coding:utf-
from flask import Flask, redirect, url_for
app = Flask(__name__) @app.route('/index/', methods=['GET', 'POST'])
def index():
# return redirect('/login/')
return redirect(url_for('login')) @app.route('/login/', methods=['GET', 'POST'])
def login():
return "LOGIN" app.run()
用 redirect() 函数来进行url重定向
六:定义错误页面:
# coding:utf-8
from flask import Flask, abort, render_template
app = Flask(__name__) @app.route('/index/', methods=['GET', 'POST'])
def index():
return "OK" @app.errorhandler()
def page_not_found(error):
return render_template('page_not_found.html'), app.run()
用@app.errorhandler(http错误码) 来触发一个函数
参考:
http://docs.jinkan.org/docs/flask/
http://flask.pocoo.org/
Flask简单学习的更多相关文章
- 读Flask源代码学习Python--config原理
读Flask源代码学习Python--config原理 个人学习笔记,水平有限.如果理解错误的地方,请大家指出来,谢谢!第一次写文章,发现好累--!. 起因 莫名其妙在第一份工作中使用了从来没有接 ...
- Log4j简单学习笔记
log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常 ...
- 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。
基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍.最后我们将会实现一个基于S ...
- shiro简单学习的简单总结
权限和我有很大渊源. 培训时候的最后一个项目是OA,权限那块却不知如何入手,最后以不是我写的那个模块应付面试. 最开始的是使用session装载用户登录信息,使用简单权限拦截器做到权限控制,利用资源文 ...
- CentOS 简单学习 firewalld的使用
1. centos7 开始 使用firewalld 代替了 iptables 命令工具为 firewall-cmd 帮助信息非常长,简单放到文末 2. 简单使用 首先开启 httpd 一般都自带安装了 ...
- Windows 下 Docker 的简单学习使用过程之一 dockertoolbox
1. Windows 下面运行 Docker 的两个主要工具1): Docker for Windows2): DockerToolbox区别:Docker For Windows 可以理解为是新一代 ...
- 在MVC中实现和网站不同服务器的批量文件下载以及NPOI下载数据到Excel的简单学习
嘿嘿,我来啦,最近忙啦几天,使用MVC把应该实现的一些功能实现了,说起来做项目,实属感觉蛮好的,即可以学习新的东西,又可以增加自己之前知道的知识的巩固,不得不说是双丰收啊,其实这周来就开始面对下载在挣 ...
- flask简单的路由分发
flask简单的路由分发 from flask import Flask, request app = Flask(__name__) @app.route('/hello') def index() ...
- Linux——帮助命令简单学习笔记
Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...
随机推荐
- idea -> Error during artifact deployment. See server log for details.
用idea导入eclipse工程,运行时,报Error during artifact deployment. See server log for details. 谷歌,最后发现是最新 tomc ...
- ES 6 系列 - 对于常用对象的拓展 api
本篇中学习并记录可能会比较常用的 api ,详细请自行查找相关资料. 一.字符串的拓展 es 6 加强了对于 Unicode 的支持.javascript 允许采用 \uxxxxx 的方式表示一个字符 ...
- solrcloud编辑zookeeper上的配置文件的方法
solrcloud的配置文件是上传在zookeeper文件系统上的.这样就面临一个问题,每次需要修改配置文件,就没有只有之前本地单机solr那么简单,需要上传. 搭建solrcloud时候提交配置文件 ...
- codeforces24D
CF24D Broken robot 题目背景 小小迪带你吃瓜 题目描述 给出一个 n×m 的矩阵区域,一个机器人初始在第 x 行第 y 列,每一步机器人会等概率 的选择停在原地,左移一步,右移一步, ...
- Nginx 返回响应过滤响应内容
陶辉94课 过滤模块 从下到上顺序 ngx_http_proxy_module 模块 Syntax: proxy_ignore_headers field ...; Default: — Contex ...
- mysql中count的注意事项
1.count()函数是用来统计表中记录的一个函数,返回匹配条件的行数. 2.count()语法: (1)count(*)---包括所有列,返回表中的记录数,相当于统计表的行数,在统计结果的时候,不会 ...
- 【GZOI2015】石子游戏 博弈论 SG函数
题目大意 有\(n\)堆石子,两个人可以轮流取石子.每次可以选择一堆石子,做出下列的其中一点操作: 1.移去整堆石子 2.设石子堆中有\(x\)个石子,取出\(y\)堆石子,其中\(1\leq y&l ...
- swagger2 如何匹配多个controller
方法一:使用多个controller的共同拥有的父类,即精确到两个controller的上一级 @Bean public Docket createRestApi() { return new Doc ...
- AtCoder ExaWizards2019题解
AtCoder ExaWizards2019题解 AtCoder (因为代码直接用模板写的,可能有点冗长) A.Regular Triangle 给你三根棍子的长度,问你能否用他们组成等边三角形. 什 ...
- [CF438D]The Child and Sequence【线段树】
题目大意 区间取模,区间求和,单点修改. 分析 其实算是一道蛮简单的水题. 首先线段树非常好解决后两个操作,重点在于如何解决区间取模的操作. 一开始想到的是暴力单点修改,但是复杂度就飙到了\(mnlo ...