python的flask框架难学吗

作者:silencement 时间:2023-08-18 15:34:32 

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判断。

来源:https://www.py.cn/kuangjia/flask/11383.html

标签:python,flask框架
0
投稿

猜你喜欢

  • mysql中一个普通ERROR 1135 (HY000)错误引发的血案

    2024-01-21 03:53:22
  • 微信小程序 scroll-view实现上拉加载与下拉刷新的实例

    2024-04-23 09:30:40
  • 什么是SVG(可升级矢量图形)

    2008-05-06 12:37:00
  • 解析Javascript中中括号“[]”的多义性

    2023-09-03 09:59:35
  • Python itertools模块详解

    2021-06-11 16:33:03
  • Python如何实现自带HTTP文件传输服务

    2023-01-05 05:04:15
  • Python中利用sorted()函数排序的简单教程

    2022-09-13 20:26:36
  • Python中dictionary items()系列函数的用法实例

    2023-11-23 08:03:03
  • javascript 通用滑动门tab类

    2023-08-05 09:42:25
  • Python利用pynput实现划词复制功能

    2022-03-28 23:14:23
  • 微信小程序应用号开发体验

    2022-03-12 12:56:02
  • Typescript3.9 常用新特性一览(推荐)

    2024-04-18 10:56:16
  • 老生常谈Python进阶之装饰器

    2022-05-20 10:51:23
  • 详细解读Python字符串的使用与f-string

    2023-06-29 07:24:21
  • 用户 jb51net 登录失败。原因: 该帐户的密码必须更改

    2024-01-13 05:58:46
  • 详解Golang中interface{}的注意事项

    2024-05-09 09:30:59
  • JS实现的网页背景闪电闪烁效果代码

    2024-04-16 09:01:19
  • 详解python之配置日志的几种方式

    2022-11-02 14:32:30
  • 商品评论的设计

    2009-12-23 13:06:00
  • python采集博客中上传的QQ截图文件

    2021-03-03 16:45:25
  • asp之家 网络编程 m.aspxhome.com