python的flask框架难学吗


Posted in Python onJuly 31, 2020

Flask框架难学吗?它和Django哪个更容易一些,这可能是学Python web开发的同学经常问的问题,下面来说一下flask框架。

Flask是python的web框架,最大的特征是轻便,让开发者自由灵活的兼容要开发的feature。

为什么要从Flask开始学习web框架?

1.python语言的灵活性给予了Flask同样的特征;

2.无论是用户画像还是产品推荐,python相比其他语言都有极大的优势;

3.Flask轻便,容易上手,试错成本低。

所以,从搭建一个轻便的博客出发,既要容易上手实现,又要能够在后期扩展用户画像和产品推荐,我选择Flask作为web框架。

Flask上手前提少,能够极大帮助初学者快速理解web开发,这也是我喜欢Flask的原因。

(1)面向对象编程(Object-Oriented Programming, OOP)

相信绝大多数人都接触过OOP,比如使用Java, Python, Go等。在Flask中,涉及基础OOP的概念,包括对象、类、继承、封装等。

(2)python基础

Flask中涉及简单python概念,包括模块、包、装饰器、模块等。

(3)命令行基础

大部分的开发都绕不开命令行,Flask同样要求基础命令行操作,例如上传服务器、查询文件、修改配置文件等。

(4)数据库基础

web开发会产生数据管理的问题,虽然可以使用非数据库的方式搭建静态网页,但从长远来看将,掌握一门基础的数据库工具是很有必要的。比如结构化数据库Mysql, Postgresql,非结构化的MongoDB, Redis等。

(5)前端基础

虽然搭建网站主要是后台逻辑编写,但今天越来越多的人在意前台展现,因此Flask除了后台python语言的要求外,还要求掌握基础的html, JavaScript, CSS。

(6)版本控制(增强)

版本控制是所有程序开发的基础,了解基础的版本控制可以大大提高开发的效率。掌握基础的git技能会提高Flask网站开发速度。

安装

使用virtualenv或者python3.3以上的pyvenv建立虚拟环境来配置开发环境。
可以通过pip方便的配置flask:

$ pip install flask

初始化(Initialization)

(1)创建flask实例对象

flask程序必须创建一个程序实例,常用方法:

from flask import Flask
app = Flask(__name__)

这里的app就是一个程序实例,客户端(一般是浏览器)将请求发送给服务端Web服务器,Web服务器再把请求发给Flask实例。
(2)构建实例对象从URL到python函数的映射关系
程序实例需要知道所有URL对应的执行代码,所以要有从URL到python函数的映射关系。处理URL到python函数映射关系的程序一般叫做路由(Router)。
Flask实现中一般通过python装饰器来实现,例如:

@app.route('/')
def index():    
    return '<h1>test</h1>'

上面的程序从程序化实例app开始,构建了根目录'/'的路由,具体实现的程序是index()函数,返回了一段html代码'test'字符串。
路由所对应的程序称为视图函数(view function),即上面的index()函数。
(3)启动服务器
程序实例用run方法来启动服务器,例如:

if __name__ == '__main__':
    app.run(debug=True, port=8777)

上面的程序是常见套路,当前python文件被执行的时候,运行flask实例化对象的run方法,启动服务器,同时上面程序设定了两个常用参数:debug为True,端口是8777,避免和其他应用的端口冲突。
(4)请求上下文
Flask使用上下文把一些视图函数的对象变成全局可访问,共有4中模式:

python的flask框架难学吗

模板

业务逻辑和表现逻辑分开,才能开发出易维护的网站,表现逻辑往往放在模板中。

Flask的模板默认在根目录的templates中,例如:

from flask import Flask, render_templatefrom datetime import datetime

app = Flask(__name__)@app.route('/<name>')def index(name):
    return render_template('index.html', name=name)    
if __name__ == '__main__':
    app.run(debug=True, port=8777)

index.html页面可以独立出来专门处理网站的表现逻辑,例如:

{% block title %}Main{% endblock %}

{% block page_content %}
<div class="page-header">
    <h1>Hello World!</h1>
    <h2>Hello, 
        {% if name %}{{ name }}
        {% else %}Stranger{% endif %}!
    </h2>
</div>
{% endblock %}

Flask默认使用Jinjia2进行模板渲染,可以用一些控制语句,例如上面的if else判断。

以上就是python的flask框架难学吗的详细内容,更多关于flask框架难吗的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python实现动态添加类的属性或成员函数的解决方法
Jul 16 Python
centos 下面安装python2.7 +pip +mysqld
Nov 18 Python
介绍Python中的文档测试模块
Apr 28 Python
Django Admin 实现外键过滤的方法
Sep 29 Python
微信跳一跳游戏python脚本
Apr 01 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
python获取本机所有IP地址的方法
Dec 26 Python
使用python实现抓取腾讯视频所有电影的爬虫
Apr 15 Python
基于Python的Post请求数据爬取的方法详解
Jun 14 Python
python实现一个函数版的名片管理系统过程解析
Aug 27 Python
Python实现自动签到脚本的示例代码
Aug 19 Python
pytorch 使用半精度模型部署的操作
May 24 Python
使用PyCharm安装pytest及requests的问题
Jul 31 #Python
django和flask哪个值得研究学习
Jul 31 #Python
Windows下PyCharm配置Anaconda环境(超详细教程)
Jul 31 #Python
Python如何输出百分比
Jul 31 #Python
PyCharm配置anaconda环境的步骤详解
Jul 31 #Python
Pycharm及python安装详细教程(图解)
Jul 31 #Python
对Python 字典元素进行删除的方法
Jul 31 #Python
You might like
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
2019/10/12 PHP
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
基于jquery实现智能提示控件intellSeach.js
2016/03/17 Javascript
JavaScript中this的四个绑定规则总结
2016/09/26 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
2016/10/28 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
xmlplus组件设计系列之网格(DataGrid)(10)
2017/05/05 Javascript
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
JS实现对json对象排序并删除id相同项功能示例
2018/04/18 Javascript
如何让微信小程序页面之间的通信不再变困难
2019/06/03 Javascript
layui的select联动实现代码
2019/09/28 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
Vue关于组件化开发知识点详解
2020/05/13 Javascript
Python方法的延迟加载的示例代码
2017/12/18 Python
Python多重继承的方法解析执行顺序实例分析
2018/05/26 Python
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
解决pyecharts在jupyter notebook中使用报错问题
2020/04/23 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
详解Django配置优化方法
2019/11/18 Python
pytorch中的inference使用实例
2020/02/20 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
绿色出行口号
2014/06/18 职场文书
七一党日活动总结
2014/07/08 职场文书
刑事起诉书范文
2015/05/19 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
高中数学教学反思范文
2016/02/18 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
MySQL sql模式设置引起的问题
2022/05/15 MySQL