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利用ansible分发处理任务
Aug 04 Python
Python编程之变量赋值操作实例分析
Jul 24 Python
CentOS下使用yum安装python-pip失败的完美解决方法
Aug 16 Python
Anaconda多环境多版本python配置操作方法
Sep 12 Python
Python UnboundLocalError和NameError错误根源案例解析
Oct 31 Python
python 动态生成变量名以及动态获取变量的变量名方法
Jan 20 Python
python使用PyQt5的简单方法
Feb 27 Python
Django ORM filter() 的运用详解
May 14 Python
Python基于xlrd模块处理合并单元格
Jul 28 Python
python爬取股票最新数据并用excel绘制树状图的示例
Mar 01 Python
让文件路径提取变得更简单的Python Path库
May 27 Python
Python Flask实现进度条
May 11 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 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
利用Laravel事件系统如何实现登录日志的记录详解
2017/05/20 PHP
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
javascript实现可全选、反选及删除表格的方法
2015/05/15 Javascript
一览画面点击复选框后获取多个id值的方法
2016/05/30 Javascript
javascript 日期相减-在线教程(附代码)
2017/08/17 Javascript
原生JS实现日历组件的示例代码
2017/09/22 Javascript
vue-router项目实战总结篇
2018/02/11 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
微信小程序中weui用法解析
2019/10/21 Javascript
[14:50]2018DOTA2亚洲邀请赛开幕式
2018/04/03 DOTA
python实现在sqlite动态创建表的方法
2015/05/08 Python
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
2018/12/18 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
Python3 requests模块如何模仿浏览器及代理
2020/06/15 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
MAC Cosmetics官方网站:魅可专业艺术彩妆
2019/04/10 全球购物
维也纳通行证:Vienna PASS
2019/07/18 全球购物
国贸专业个人求职信范文
2014/01/08 职场文书
汽车装潢店创业计划书范文
2014/02/05 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
党员转正意见怎么写
2015/06/03 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
导游词之青城山景区
2019/09/27 职场文书
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android
python之基数排序的实现
2021/07/26 Python
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers