从下载安装开始的所有笔记。

其实 Flask 的示例程序算是 MVC 模式的. Model 是 ORM, V 是 Template, C 是 url route 和 request handler.


JSON数据格式



安装虚拟环境

activate是激活虚拟环境。deactivate是退出虚拟环境。

(venv) C:\Users\Bug\PycharmProjects\FirstProj>pip install virtualenv
(venv) C:\>mkdir Virtualenv
(venv) C:\Virtualenv>virtualenv flask-env
(venv) C:\Virtualenv\flask-env\Scripts>activate
(flask-env) C:\Virtualenv\flask-env\Scripts>

在虚拟环境中安装flask

(flask-env) C:\Virtualenv\flask-env\Scripts>pip install flask
(flask-env) C:\Virtualenv\flask-env\Scripts>python
>>> import flask
>>> print(flask.__version__)
1.1.1
>>> exit()

新建py项目的时候,配置一下Interpreter:"C:\Virtualenv\flask-env\Scripts\python.exe"


参考了视频教程:网易云课堂
因为社区版的pycharm不能新建Flask项目,因此下载了Professional版本并破解安装(方式自行百度)。
我使用的py版本是2.7。
环境配置折腾了一上午。两个原因:
1、pycharm社区版更换为专业版
2、python3更换为python2.7
在版本更换的过程中,装来装去好像把虚拟环境搞坏了,报错找不到traceback之类的。又重新按着上面的命令装了一遍环境,就好了。

最终成功建立项目:testflask3
默认生成代码:

使用py2需要设置编码(默认ascii,需要改成utf-8),py3不需要设置。

#encoding: utf-8from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello_world():return 'Hello World!'if __name__ == '__main__':app.run()

右键运行,控制台输出如下,点击url即可看到helloworld

 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

代码含义详解:


debug模式的设置


设置开启debug模式,可以在浏览器端显示完整的异常traceback栈,并且在每次更新保存的时候达到热部署的效果。

另一种配置debug的方式:使用config文件
新建一个py文件,如下

使用配置文件的方式设置参数,以后也会用到。方式为在原有的py中添加一行:

小结


获取url请求参数


示例代码

# encoding: utf-8from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello_world():return '<h1>Hello World!</h1>我dddde第一个flask程序'@app.route('/article/<id>')
def article(id):return u'您请求的参数是:%s' % idif __name__ == '__main__':app.run(debug=True)

小结


反转url url_for()

url_for操作对象是函数,而不是route里的路径。
如果route和函数名不一样而导致使用url_for()错误,千万不要去route找错误。

url_for()函数是用于构建指定函数的URL。

一般我们通过一个URL就可以执行到某一个函数。
如果反过来,我们知道一个函数,怎么去获得这个URL呢?
url_for函数就可以帮我们实现这个功能。

url_for()函数接收两个及以上的参数,他接收函数名作为第一个参数,接收对应URL规则的命名参数,如果还出现其他的参数,则会添加到URL的后面作为查询参数。

通过构建URL的方式而选择直接在代码中拼URL的原因有两点:

将来如果修改了URL,但没有修改该URL对应的函数名,就不用到处去替换URL了。
url_for()函数会转义特殊字符和Unocode数据,这些工作都不需要我们自己处理。

示例

访问页面结果:

控制台输出:

 * Detected change in 'C:\\Users\\Bug\\PycharmProjects\\testflask3\\app.py', reloading* Restarting with stat* Debugger is active!* Debugger PIN: 300-662-218* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
/list/
/article/abc
127.0.0.1 - - [29/Sep/2019 14:41:55] "GET / HTTP/1.1" 200 -

源码

# encoding: utf-8from flask import Flask, url_forapp = Flask(__name__)@app.route('/')
def index():print url_for('my_list')print url_for('article',id='abc')return '<h1>Hello World!</h1>'@app.route('/list/')
def my_list():return 'list'@app.route('/article/<id>')
def article(id):return u'您请求的id是:%s' % idif __name__ == '__main__':app.run(debug=True)

实际应用举例


页面跳转和重定向


示例:使用http://127.0.0.1:5000/question/0代表未登录
使用http://127.0.0.1:5000/question/1代表已登录
如果未登录,则重定向到登录页面
如果已登录,则进入question问答页面


源码

# encoding: utf-8from flask import Flask, redirect, url_forapp = Flask(__name__)@app.route('/')
def index():login_url = url_for('my_login')  # 这里填写视图函数名return '这是首页'@app.route('/login')
def my_login():return '这是登录页面'@app.route('/question/<flag>')
def my_question(flag):if flag == '0':return redirect(url_for('my_login'))else:return '(已登录)这是发布问答页面'if __name__ == '__main__':app.run(debug=True)

render_template模板文件

项目结构

index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>首页</title>
</head>
<body><p>你好,{{ username }},您已进入:至尊欢迎页面</p><p>id:{{ id }}</p><p>username:{{ username }}</p><p>sex:{{ sex }}</p><p>age:{{ age }}</p>
</body>
</html>

后台传参方式一:相当于键值对,这样的缺点是参数过多时不易维护

# encoding: utf-8from flask import Flask, redirect, url_for, render_templateapp = Flask(__name__)@app.route('/')
def index():return render_template('index.html', username=u'张三', sex=u'不男不女')if __name__ == '__main__':app.run(debug=True)

后台传参方式二:使用字典,再打散

# encoding: utf-8from flask import Flask, redirect, url_for, render_templateapp = Flask(__name__)@app.route('/')
def index():context = {'id': 23456,'username': u'张三','sex': u'不男不女','age': 26}return render_template('index.html', **context)if __name__ == '__main__':app.run(debug=True)


小结


if判断


示例

使用.../0表示未登录,使用.../1表示已登录,并且限制年龄>18


index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>首页</title>
</head>
<body>{% if user and user.age > 18 %}<p>年龄:{{ user.age }}</p><a href="#">{{ user.name }}</a><a href="#">注销</a>{% else %}<a href="#">登录</a><a href="#">注册</a>{% endif %}
</body>
</html>

app.py

# encoding: utf-8from flask import Flask, redirect, url_for, render_templateapp = Flask(__name__)@app.route('/<flag>')
def index(flag):if flag == '1':user = {'username': u'张三','age': 23,}return render_template('index.html', user=user)else:return render_template('index.html')if __name__ == '__main__':app.run(debug=True)

字典的使用+flask中的for循环


1、使用python遍历一个字典

2、使用flask遍历一个字典

3、普通的列表遍历
(python后台)

(前端html)

示例:四大名著
(后台)


(前端)


过滤器



示例:如果用户没有设定头像,则使用默认头像
(后端)

(前端)

显示效果:


继承和使用block

1、python中普通的继承

(继承-例1)

(继承-例2)

2、前端页面

使用继承:公共模板放在父html(base.html)中

3、为了在子html中继承父html的同时,添加自己的内容,需要在父html留一个block接口
(前端-父模板)

(前端-子模板)
注意:如果要在子模板中实现一些内容,必须写在接口block中,不能写在block块外面(接口外面的内容不会被显示或渲染)
可以定义多个不同名称的block块。

运行效果

小结


url链接和加载静态文件



flask中加载外部css文件链接js链接图片链接的方式如下(在服务器上运行时,不能使用普通的url加载方式)

小结

【Python】Flask框架系列(一):安装、页面跳转/重定向、模板、逻辑语句、过滤器、继承/使用block、url链接/加载静态资源相关推荐

  1. Nginx系列之代理之后无法加载静态资源处理方法

    最近在跟https域名升级问题,遇到一个麻烦的任务,因为域名由另外的公司负责,对方公司开了一个nginx服务器做了类似的转发 location /zhzw {proxy_pass http://127 ...

  2. #3使用html+css+js制作网页 番外篇 使用python flask 框架 (I)

    #3使用html+css+js制作网页 番外篇 使用python flask 框架(I 第一部) 0. 本系列教程 1. 准备 a.python b. flask c. flask 环境安装 d. f ...

  3. python flask框架优点_python之全栈(Flask框架)

    虚拟环境 虚拟环境顾名思义就是虚拟的,在这里面装任何软件都不会影响到其他的程序,类似与一个抽屉. 使用虚拟环境的好处是:让电脑中安装很多种解释器,并且互不影响 virtualenv的使用 安装virt ...

  4. Python Flask框架-开发简单博客-认证蓝图

    作者:Eason_LYC 悲观者预言失败,十言九中. 乐观者创造奇迹,一次即可. 一个人的价值,在于他所拥有的.可以不学无术,但不能一无所有! 技术领域:WEB安全.网络攻防 关注WEB安全.网络攻防 ...

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

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

  6. python flask框架教程_Flask框架从入门到实战

    Flask简介: Flask是一个使用 Python 编写的轻量级 Web 应用框架,基于 WerkzeugWSGI工具箱和 Jinja2模板引擎.使用 BSD 授权. Flask也被称为 " ...

  7. Python flask框架入门

    一.Flask 简介 Flask: Flask是一个用Python编写的Web应用程序框架.Flask基于Werkzeug(WSGI工具包)和Jinja2模板引擎. Web Framework: We ...

  8. Python Flask框架

    Python Flask框架 Flask框架简介 安装过程 Falsk程序的运行过程 基本语法/结构 如有错误,请指正 Flask框架简介 Flask是一个轻量级的可定制框架,使用Python语言编写 ...

  9. 【25】数据可视化:基于 Echarts + Python Flask框架动态实时大屏范例 - 企业宣传

    目录 效果展示 多主题样式 一. 确定需求方案 1.确定产品上线部署的屏幕分辨率 2.部署方式 二.整体架构设计 三.编码实现 (基于篇幅及可读性考虑,此处展示部分关键代码) 1.前端html代码 - ...

最新文章

  1. 在 react 里使用 antd
  2. superset配置与初步使用
  3. 16*64点阵屏的c语言程序,16*64点阵程序 - 单片机/MCU论坛 - 电子技术论坛 - 广受欢迎的专业电子论坛!...
  4. php 清空一个数组_PHP工程师学Python数据类型
  5. FusionCharts使用问题及解决方法(三)-FusionCharts常见问题大全
  6. python+OpenCV图像处理(五)图像的阈值分割
  7. C++ string和c类型字符数组的比较
  8. Excel自动化教程之通过python将Excel与Word集成无缝生成自动报告
  9. 深度学习理论与实践——课程笔记(一)
  10. 搭建Linux内核代码浏览工具LXR
  11. web前端之幻灯片(二)--自动播放
  12. Power BI——柱形图
  13. 基于vue的图片剪裁工具vue-croppe
  14. 修改Java的环境变量
  15. 804计算机专业综合,2021南开大学804通信综合基础考试范围(大纲)和参考书目...
  16. 读书笔记之JVM垃圾回收
  17. 江浙沪计算机调剂,往年有调剂缺额的江浙沪985/211,竞争较小
  18. 《操作系统-真象还原》08. 内存管理系统
  19. 10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第8天 2018/11.2
  20. bpython缺少termios_asciinema缺少文件:ImportError:没有名为“termios”的模块

热门文章

  1. java 网络驱动器_删除多余的网络驱动器
  2. mysql 预留一个自定义字段_mysql-预留字段
  3. Minetorch教程
  4. TransCenter解读
  5. linux npm环境变量,linux配置npm环境变量
  6. 习题7-2 求一批整数中出现最多的个位数字 (20分)
  7. Mysql数据库中的as和distinct的使用
  8. 看我如何作死 | 网络延迟、网络丢包、网络中断一个都没落下过
  9. Golang之变量去哪儿
  10. 区分多种类型的输入输出