操作系统:Windows
Python:3.5
欢迎加入学习交流QQ群:657341423


路由规则

路由,就是我们常说的网址,专业一点就是url。
在Flask里面,路由的设置是一个装饰器实现的。如图:

括号里面就是我们自定义的路由地址。而且为一个字符串。皆以/为开头。上图就单一个/,就是代表域名主页。看看运行结果就知道了


路由的变量规则
在上图可以看到这段代码

@app.route('/user/<username>')
def show_user_profile(username):# show the user profile for that userreturn 'User %s' % username

这里的url设置有<username>,而且函数带参数username,这说明url里面的<username> 是一个变量,而且通常参数形式传递给对应的函数。


路由的/规则
看代码

会发现没有注释的代码的url设置里面,结尾一个有/,一个是没有的。
先看看运行结果:



会发现projects在url上无论加不加/都可以调到该网页上,但是about就不行。
这个细节的设计要值得注意。
题外话:在django也有这个情况。不过和Flask完全是不一样的情况。


路由的get和post
用户每次访问网页都是http里面的get方法,Flask里面设定get,post方法是在路由设置的。

from flask import request
#导入reques
#设定post和get
@app.route('/projects/',methods=['GET', 'POST'])
def projects():#判断是post还是getif request.method=='POST':return 'The project page'else:return 'a'

方法比较简单。这里不做详细解释。

基本上Flask的路由设置大概就那么多:
1,路由的变量规则
2,路由的/规则
3,设定http的post和get


Ruturn类型

模板渲染
看完路由的设置,然后看def里面的return,这个return和Django的一样功能,都是用户浏览该url后,服务器通过这个url返回显示相应的网页给用户浏览。也就是说url生成的页面内容。
代码

@app.route('/hello/<name>')
def hello(name=None):return render_template('hello.html', name=name)

通过导入from flask import render_template
然后return render_template即可
注意的是模板(html文件)在该文件目录下templates查找的。
如图

<!doctype html>
<title>Hello from Flask</title>
{% if name %}<h1>Hello {{ name }}!</h1>
{% else %}<h1>Hello World!</h1>
{% endif %}

基本上模板的渲染和Django的一样用法。可参考
此外还有模板继承,请参考


重定向
在return一个模板之外,还有一个重定向的方法,就是我浏览了这个url之后,自动跳转到另外的一个url上。
代码

from flask import redirect
@app.route('/about/aa')
def aa():return redirect('/projects/')

这代码实现了,当浏览器输入http://127.0.0.1:5000/about/aa后,会自动跳到http://127.0.0.1:5000/projects/。

基本上return的方法就模板渲染和重定向


获取post和get数据

from flask import request
@app.route('/projects/',methods=['GET', 'POST'])
def projects():if request.method=='POST':name=request.form.get('name','aa')age=request.form.get('age','b')return name+' is '+ageelse:a=request.args.get('mytext1','mypassword')return str(a)

获取post方法有2种,官方文档是request.form['username']
这里是用request.form.get(‘name’,‘aa’)的。
个人比较建议使用第二种,因为第一种如果username不存在的话,会出异常。而第二种的话,就是name不存在的话,值会变成aa。

同理get也是如此
测试结果:

此外还有文件上存功能,请参考


基本上一个简单的网站就这样完成了。这个只能算入门级。后面会涉及到admin站点管理,flask_sqlalchemy(ORM)工具使用,flask构建MTV开发模式

Python Flask教程(一)相关推荐

  1. Python Flask教程

    Welcome to Python Flask tutorial. In previous lesson we have learnt about python lambda. Python flas ...

  2. Python Flask教程学习02

    书接上文Python Flask教程学习01 文章目录 Flask 教程 Flask 会话 Flask 消息闪现 Flask 文件上传 Flask 扩展/寻找扩展 Flask 教程 Flask 会话 ...

  3. Python Flask教程学习03

    书接上文Python Flask教程学习02 文章目录 Flask 教程 Flask 邮件(Flask-Mail) Flask Mysql及Flask SQLAlchemy 创建数据表 插入数据 查询 ...

  4. 全栈Python Flask教程-建立社交网络

    Learn how to build a basic social platform with the Python Flask web framework. 了解如何使用Python Flask网络 ...

  5. Python Flask教程学习01

    教程来源于w3cschool,我跟着敲一遍,做一遍 Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活.轻便.安全且容易上手.它可以很好地结合MVC模式进行开发,开 ...

  6. python flask 教程_Flask 教程 第一章:Hello, World!

    一趟愉快的学习之旅即将开始,跟随它你将学会用Python和Flask来创建Web应用.上面的视频包含了整个教程的内容预览(译者注:视频见原文).通过学习本章内容,你将学会如何创建一个Flask项目,并 ...

  7. python flask教程

    1.安装Flask pip install flask 2.目录结构 flask-demo/├ run.py # 应用启动程序├ config.py # 环境配置├ requirements.txt ...

  8. python flask教程百度云,Python Web框架Flask中使用百度云存储BCS实例

    对于部署在百度应用引擎BAE上的项目,使用百度云存储BCS(Baidu Cloud Storage)是不错的存储方案. 百度云存储已有Python SDK,对它进行简单封装后,就可以直接在Flask中 ...

  9. python Flask框架如何请求及返回数据——flask详细教程

    python Flask框架如何请求及返回数据--flask详细教程 文章目录: 1 Flask介绍 1.1 Flask简单介绍 1.2 Flask相关资料信息 2 Flask快速入门 2.1 Fla ...

最新文章

  1. sql server 表索引碎片处理
  2. 编写 DockerFile
  3. STM8L编程环境官方库+STVD+COSMIC+ST-Link
  4. 【知识图谱】知识存储
  5. Hadoop源码分类概要整理
  6. 如果我是博客园的产品经理【上】
  7. webview跟html通信的原理,1.iOS: webView与html的交互
  8. Linux系统编程24:基础IO之在Linux下深刻理解C语言中的动静态库以及头文件和库的关系
  9. 信息学奥赛一本通(1102:与指定数字相同的数的个数)
  10. 使用jquery对特殊字符进行转义,防止js注入
  11. 【云栖大会】阿里云未来走势 看当家的怎么说?
  12. (79)FPGA版本如何管理?
  13. 官方 STM32F303ZE Nucleo-144开发板 按键使用
  14. 玩转 SpringBoot 2 快速整合 | JSP 篇
  15. javascript中的Date类型
  16. PowerVim - 强大的vim配置
  17. UI之CALayer详解(转)
  18. 信息系统分析与设计(自考)
  19. android 优酷 api接口,腾讯优酷网站视频引用接口
  20. 手机网络 G、E、H、H+、4G 都是什么意思

热门文章

  1. 老白Oracle数据库性能优化实务-视频分享
  2. c语言教学系统设计报告,C语言在线教学系统的设计与实现
  3. 渗透测试用工具(三)layer子域名挖掘机
  4. Android-数据的回传
  5. 第八届蓝桥杯个人赛省赛C/C++ A组 第一题 迷宫
  6. 图的割点、桥与双连通分支的基本概念
  7. JS - n次方计算
  8. 利用熵和条件熵预测图书借阅
  9. Scratch和机器人编程有什么区别?
  10. git使用MERGING处理