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中模式:
模板
业务逻辑和表现逻辑分开,才能开发出易维护的网站,表现逻辑往往放在模板中。
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
猜你喜欢
- 整个重装步骤大致分四个步骤进行,第一步,备份原mysql中的所有数据库。第二步,完全卸载mysql第三步,下载安装新版mysql第四步,导入
- <!-- #include file="../conn.asp" --&
- Python中的正则表达式要用到re模块,下面先介绍一下正则表达式需要用到的特殊字符和说明常用的RegEx基础语法语法说明\d匹配一个数字字
- 从这节开始,将会给大家介绍几个ASP中的三大通用类,它贯穿于我所设计的三层架构中,是对ASP语法的扩展,可以提高很多细节处理上的效率,可以算
- 第一种是用urllib模块,下面是例示代码:import urllibstatus=urllib.urlopen("https:/
- IE 的弹窗常用的有两种,不外乎是 window.open 与 window.showModalDialog,前者兼容性好,后者
- 本文实例讲述了PHP中round()函数对浮点数进行四舍五入的方法。分享给大家供大家参考。具体方法如下:语法:round(x,prec)参数
- 目录一、6个非常重要的str处理词二、重要的str处理 几乎所有的 数据类型里也都能用1、提取字符串中 特定位置的字符2、len 得到当前变
- 基于smtplib包制作而成,但在实践中发现一个不知道算不算是smtplib留的一个坑,在网络断开的情况下发送邮件时会抛出一个socket.
- 那么Python如何快速上手?找来了一篇广受好评的新语言学习方法介绍,供大家参考。听说,你决定要为你的 “技能树” 再添加一门特定的编程语言
- 1.视图的概述 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可
- 前言本文目的:根据本人的习惯与理解,用最简洁的表述,介绍爬虫的定义、组成部分、爬取流程,并讲解示例代码。基础爬虫的定义:定向抓取互联网内容(
- 1、生成配置文件''' 生成配置文件'''import configparse
- 如何准确获知对方来访问的时间和URL?代码如下:logfile.asp<%Dim ValidLog '&n
- 我们经常会遇到多重查询问题,而长长的SQL语句往往让人丈二和尚摸不着头脑。特别是客户端部分填入查询条件时,如用普通方法将更是难上加难。以下巧
- 在python中我们可以使用requests模块来实现调用远程接口一:安装requests模块pip install requests二:使
- 详解Python MD5加密Python 3下MD5加密# 由于MD5模块在python3中被移除# 在python3中使用hashlib模
- 在pycharm中设置python脚本的文件模板,让文件创建的时候就自动写上一些相关信息:1、进入pycharm的File->sett
- 相信每个前端工程师都有自己喜爱的javascript框架,说情感也好,道信仰也罢,javascript框架带给人的不仅仅是便捷的开发,更有一
- 当你在IE中点击一个Realplayer连接时,系统会自动启动Realplayer软件,不仅占用系统内存,而且在上网时Realplayer容