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判断。
以上就是python的flask框架难学吗的详细内容,更多关于flask框架难吗的资料请关注其它相关文章!
python,flask框架
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】