文章目录

  • 前言
  • Flask 基础概念和安装
  • Flask 快速入门小应用
  • Flask 之模板的使用
  • 后续,待更新。。。。

前言

最近开始学习flask 框架,本文用于flask 框架的基础入门学习,版本使用的是py3.7,学习内容相对比较简单,后续再扩充高级知识。

Flask 基础概念和安装

首先我们得清楚,flask 具体是个什么东东?我们学了flask 有啥用?

这里给出维基百科的解释:Flask是一个使用Python编写的轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2 模板引擎

安装就不多说了,直接输入以下命令即可:

pip install flask

Flask 快速入门小应用

学东西,得先知道我们用这个东西,能做出来一个什么东西。
一个最小的基于flask 的应用可能看上去像下面这个样子:

from flask import Flask
app = Flask(__name__)@app.route('/')
def hello_world():return 'Hello World!'if __name__ == '__main__':app.run(0.0.0.0)

运行起来的效果就是这样的:

具体,这串代码什么意思?
首先,我们导入了Flask 这个类
然后编写了一个hello_world 函数,返回一个“Hello World”字符串
这也就是为啥我们能在网页上看到一串字符串的原因。
那么剩下的是什么?

@app.route('/')

这一串代码,官方解释为路由,其实就是告诉你当用户访问哪个路径的时候,调用下面装饰的这个函数。
所以上面那个小应用的代码,意思就是,当我访问根路径(‘/’)时执行hello_world函数。
当然,一个函数被多个路由装饰的时候,意味着你可以通过多个路径执行到该函数。

调用app的run方法即可启动服务,指定’0.0.0.0’,这会让操作系统监听所有公网 IP。

app.run(0.0.0.0)

再看看下面这个例子:

from flask import Flask
app = Flask(__name__)@app.route('/')
@app.route('/index')
def hello_world():return 'Hello World!'@app.route('/login')
def login():return 'Login Success!'if __name__ == '__main__':app.run(0.0.0.0)


EZ ~~

Flask 之模板的使用

经过上面的小应用,我们可以简单的利用flask生成一个小的网页,但是,这网页我想要加点样式怎么办?
一个最简单也是最懒的方法:就是让函数直接返回一串html代码
比如下面这个例子:

@app.route('/')
@app.route('/index')
def hello_world():def index():user = {'username': 'Cxiansheng'}return '''<html><head><title>Home Page - CSDN</title></head><body><h1>Hello, ''' + user['username'] + '''!</h1></body></html>'''


那么问题来了,我所有的函数都需要这串html代码怎么办?总不能所有的函数都返回一下这一段html代码吧。
这个时候,模板就派上用场了。
为了简化这些操作,Flask 配备了 Jinja2 模板引擎
我们把上面的html 代码装换成模板,命名为’index.html’:

<html><head><title>{{ title }} - CSDN</title></head><body><h1>Hello, {{ user.username }}!</h1></body>
</html>

然后就可以使用 render_template() 方法来渲染模板,传入必要的参数即可

@app.route('/')
@app.route('/index')
def hello_world():user = {'username': '这是模板生成的'}return render_template('index.html', title='Home', user=user)

偷懒成功,现在我们可以直接调用这个模板,而不需要手动返回html代码了。
突然一个念想:
那多个网页共有部分的html 代码可不可以也单独保存成一个模板?
例如CSDN的标题栏:

既然想偷懒,就继续偷懒下去吧。
我们可以利用模板继承的思想,去避免重复性的代码编写,例如:


我们利用上面的两个快速小应用,做一个标题栏,那么标题栏的html代码我们就可以做一个base.html用来给其他页面继承使用。
如何继承?
利用“{% extends ‘base.html’ %}”,即可继承base.html的代码
首先我们先看一下base.html的代码:

<html><head>{% if title %}<title>{{ title }} - CSDN</title>{% else %}<title>welcome - CSDN</title>{% endif %}</head><body><div>My Website:<a href="{{ url_for('index') }}">Home</a><a href="{{ url_for('login') }}">Login</a></div><hr>{% block content %}{% endblock %}</body>
</html>

其中 {% block content %}{% endblock %}这两个标识,即标记继承过来的代码所占的坑,也就是说,如果index.html 代码继承了base.html代码,那么index.html代码将会被放置在 {% block content %}{% endblock %}这两个标识之间。

下面看看index.html代码

{% extends 'base.html' %}
{% block content %}<h1>Hello {{ user.username }}!</h1>
{% endblock %}

那么到了这个阶段,我们就可以利用flask框架+Jinja2模板创建我们自己的网页啦

后续,待更新。。。。

Flask框架基础入门教程相关推荐

  1. Python基础入门教程:使用 Python 3 协程快速获得一个代理池

    Python基础入门教程:使用 Python 3 协程快速获得一个代理池 前言 在执行 IO 密集型任务的时候,程序会因为等待 IO 而阻塞.比如我们使用 requests 库来进行网络爬虫请求的话, ...

  2. 美团小程序框架mpvue入门教程

    美团小程序框架mpvue入门教程 自打写了 美团小程序框架mpvue蹲坑指南, 一发不可收拾,今天趁周末空闲,来写个mpvue(没朋友)的简单入门教程,本教程只针对新手,老鸟勿喷. 另外,我还专门为本 ...

  3. 《2020版JavaScript基础入门教程全集》,助你一臂之力!

    当下,随着5G商用正在有序推进,很多传统的前端工程师并不能满足时下企业用人需求了,越来越多的开发模式以及前端框架不断的涌现出来,这也就要求程序员需要不断去自我增值. 前端要学习的东西很多,对于自学的小 ...

  4. Linux基础入门教程

    Linux基础入门教程 --------- Linux学习路径 Linux学习者,常常不知道自己改怎么学习linux: Linux初级,也就是入门linux 前提是需要有一些计算机硬件相关的知识或是有 ...

  5. Android基础入门教程——1.1 背景相关与系统架构分析

    Android基础入门教程--1.1 背景相关与系统架构分析 标签: Android基础入门教程 1.Android背景与当前的状况 Android系统是由Andy Rubin创建的,后来被Googl ...

  6. vue 美团框架_美团小程序框架mpvue入门教程

    美团小程序框架mpvue入门教程 本教程只针对新手,老鸟勿喷. 另外,我还专门为本文做了一个简单的项目,如果懒得从头开始搭项目的童鞋,可以直接去我的 github上克隆到本地, 安装一下依赖,即可直接 ...

  7. Python基础入门教程:Day21-30/Web前端概述

    Python基础入门教程:Web前端概述 说明:本文使用的部分插图来自 Jon Duckett 先生的*HTML and CSS: Design and Build Websites*一书,这是一本非 ...

  8. Android基础入门教程——4.2.3 Service精通

    Android基础入门教程--4.2.3 Service精通 标签(空格分隔): Android基础入门教程 本节引言: 本节,我们继续来研究Service(服务)组件,本节将会学习下Android中 ...

  9. 2021最新HarmonyOS鸿蒙系统应用开发之基础入门教程到实战—持续更新(第三节:鸿蒙的技术特征)

    第三节:鸿蒙的技术特征 每篇内容都有视频讲解,可直接点击观看+关注,持续更新中 2021最新HarmonyOS鸿蒙系统应用开发之基础入门教程到实战-持续更新(第二节:鸿蒙OS系统分布式操作) 硬件互助 ...

最新文章

  1. php之类,对象(四)加载类及练习题
  2. jquery学习开发资料
  3. g460 bios 白名单_深睛高清车牌识别相机白名单,智能管理车辆进出_深睛车牌识别...
  4. node 创建静态web服务器(下)(处理异步获取数据的两种方式)
  5. 为什么torch.nn.Linear的表达形式为y=xA^T+b而不是常见的y=Ax+b?
  6. 【转】1.4 Magento2语法讲解
  7. get,post请求的编码统一
  8. CSS3新增了哪些特性
  9. java String和StringBuilder的执行效率
  10. Android apk如何加固防止被破解(防止逆向编译)
  11. 微信小程序------媒体组件(视频,音乐,图片)
  12. 计算机指令的标准,MIDI是乐器和计算机使用的标准语言,是一套指令
  13. PCA(主成分分析法)使用情景及排序企业综合实力示例
  14. http接口 Spring boot中的Http压缩配置gzip
  15. About Redistribute
  16. VB中MID如何使用
  17. 骑友,怎么挑选适合自己的赛事
  18. AES128加密算法的实现(C/Java/C#)
  19. [转]帐号登录事件(事件编号与描述)
  20. ubuntu18.04更换鼠标游标主题

热门文章

  1. 中国房地产泡沫规模巨大将载入历史 面临崩溃风险
  2. 南京师范大学计算机学院师资,南京师范大学计算机与电子信息学院导师教师师资介绍简介-陈燚...
  3. [2016 NUIST 程序设计竞赛] D. 达朗贝尔的台阶
  4. 计算机图形学6--讨论多边形
  5. 超百万观众同场看直播流畅不卡顿,快手如何做到的?|首次披露
  6. 神奇宝贝/数码宝贝分类器笔记-机器学习-李宏毅2021
  7. npm i --save 与 --save -dev的区别
  8. 海水淡化除硼工艺及方法
  9. java实现程序等待一段时间的代码
  10. python中一切都是对象对吗_在 Python 中一切皆对象,它完全支持()