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错误处理详解
Sep 28 Python
浅要分析Python程序与C程序的结合使用
Apr 07 Python
Python yield 使用浅析
May 28 Python
python随机取list中的元素方法
Apr 08 Python
flask-restful使用总结
Dec 04 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
Apr 15 Python
Python实现的远程文件自动打包并下载功能示例
Jul 12 Python
Python基于pygame实现单机版五子棋对战
Dec 26 Python
多个python文件调用logging模块报错误
Feb 12 Python
用python绘制樱花树
Oct 09 Python
教你怎么用Python操作MySql数据库
May 31 Python
Python import模块的缓存问题解决方案
Jun 02 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
php getsiteurl()函数
2009/09/05 PHP
PHP正确解析UTF-8字符串技巧应用
2012/11/07 PHP
php session的锁和并发
2016/01/22 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
XHProf报告字段含义的解析
2016/05/17 PHP
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
javascript动画之圆形运动,环绕鼠标运动作小球
2010/07/20 Javascript
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
jquery 3D 标签云示例代码
2014/06/12 Javascript
javascript数组去重的方法汇总
2015/04/14 Javascript
js滑动提示效果代码分享
2016/03/10 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
2017/01/18 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
Angular2中监听数据更新的方法
2018/08/31 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
python常见数制转换实例分析
2015/05/09 Python
Python中的hypot()方法使用简介
2015/05/18 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
python游戏地图最短路径求解
2019/01/16 Python
numpy.where() 用法详解
2019/05/27 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
python scrapy爬虫代码及填坑
2019/08/12 Python
python如何快速生成时间戳
2020/07/21 Python
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
统计每一学生的平均成绩
2014/06/06 面试题
4s店机修工岗位职责
2013/12/20 职场文书
委托书的写法
2014/08/30 职场文书
国博复兴之路观后感
2015/06/02 职场文书
Python字典的基础操作
2021/11/01 Python