Flask入门(非常详细)零基础入门到精通,收藏这一篇就够了

121 篇文章 2 订阅
121 篇文章 0 订阅

目录:

1.Flask介绍

2.Flask安装及使用

(1)pip安装Flask

(2)编写运行最简单的Flask应用

(3)路由:route

(4)Flask变量规则

(5)URL / 重定向行为

(6)URL构建

(7)Flask重定向和

3.Flask渲染模板

(1)Jinja2模板引擎介绍

(2)渲染模板

(3)模板渲染示例

 我不是专门做开发的,为什么要学Flask框架呢,主要是为了研究学习Flask模板注入漏洞。

1.Flask介绍

Flask是基于Werkzeug,Jinja2的Python微框架,有很多内容和Django类似,特别是在模块渲染方面,还有包括if、for等语法和python代码的引用,如:{% %}和{{ }}等等,但是其中对于url的设置则是全新的,开启服务调用函数也要轻便不少。


2.Flask安装及使用

(1)pip安装Flask

C:\>pip3 install flask``C:\>pip3 list |findstr Flask``Flask            1.1.2

(2)编写运行最简单的Flask应用

hello.py:

#!/usr/bin/python3``# -*- coding: UTF-8 -*-``   ``from flask import Flask``app = Flask(__name__)``   ``@app.route('/')   #route装饰器,用作url与视图函数的映射,一般写在函数上方``def hello():`    `return "Hello afei!"``   ``#主函数,运行之后在浏览器输入:http://127.0.0.1:5000 即可``if __name__ == '__main__':`    `app.run()

注意:不要使用flask.py作为应用名称,这会与Flask本身发生冲突。

运行访问:

D:\code\python\python Flask>python hello.py` `* Serving Flask app "hello" (lazy loading)` `* Environment: production`   `WARNING: This is a development server. Do not use it in a production deployment.`   `Use a production WSGI server instead.` `* Debug mode: off` `* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)``127.0.0.1 - - [13/Oct/2020 10:52:27] "?[37mGET / HTTP/1.1?[0m" 200 -

(3)路由:route

使用route()装饰器可以把函数绑定到URL。

route.py:

#!/usr/bin/python3``# -*- coding: UTF-8 -*-``   ``from flask import Flask``app = Flask(__name__)``   ``@app.route('/')``def index():`    `return "This is index page!"``   ``@app.route('/hello')``def hello():`    `return "hello afei!"``   ``if __name__ == '__main__':`    `app.run()

运行结果:

(4)Flask变量规则

通过把URL的部分标记为就可以在URL中添加变量。

variable.py:

#!/usr/bin/python3``# -*- coding: UTF-8 -*-``   ``from flask import Flask, escape, url_for``app = Flask(__name__)``   ``@app.route('/user/<name>')``def show_name(name):`    `return 'My name is %s' % escape(name)``   ``@app.route('/pass/<int:pwd>')``def show_pwd(pwd):`    `return 'The password is %d' % pwd``   ``@app.route('/path/<path:subpath>')``def show_path(subpath):`    `return 'The subpath is %s' % subpath``   ``if __name__ == '__main__':`    `app.run(debug=True)

转换器类型:

转换器
描述
string
接收任何不包含斜杠的文本(默认缺省值)
int
接收正整数
float
接收浮点数
path
类似string,但可以包含斜杠
uuid
接收UUID字符串

(5)URL / 重定向行为

url_redirect.py:

#!/usr/bin/python3``# -*- coding: UTF-8 -*-``   ``from flask import Flask``app = Flask(__name__)``   ``@app.route('/project/')``def project():`    `return 'This is project page!'``   ``@app.route('/about')``def about():`    `return 'This is about page!'``   ``if __name__ == '__main__':`    `app.run()

上述代码中,/project尾部有一个斜杆,看起来像一个文件夹,访问一个没有斜杆或者加上多个斜杆的url时,Flask会自动进行重定向,在尾部只增加一个斜杆。

    /about的尾部没有加斜杆,其表现行为和一个文件类似,如果访问about/带斜杆将会得到404错误,这样可以保持URL唯一。

(6)URL构建

使用url_for函数可以构建指定函数的url,它把函数名称作为第一个参数。它可以接受任意个关键字参数。

url_build.py:

#!/usr/bin/python3``# -*- coding: UTF-8 -*-``   ``from flask import Flask, escape, url_for``app = Flask(__name__)``   ``@app.route('/')``def show_index():`    `return 'This is index page!'``   ``@app.route('/login')``def show_login():`    `return 'This is login page!'``   ``@app.route('/user/<username>')``def show_username(username):`    `return '{}\'s profile'.format(escape(username))``   ``#使用test_request_context()方法来调用url_for函数``with app.test_request_context():`    `print(url_for('show_index'))`    `print(url_for('show_login'))`    `print(url_for('show_login', next='/'))`    `print(url_for('show_username', username='afei'))
D:\code\python\python Flask>python url_build.py``/``/login``/login?next=%2F``/user/afei

(7)Flask重定向和

Flask中有一个redirect()函数,该函数主要是将用户重定向到具有指定状态代码的另一个目标位置。

redirect函数原型:

Flask.redirect(location, statuscode, response)

location参数:设置重定向响应的URL;

statuscode参数:设置发送到浏览器的标头,默认302;

response参数:设置实例化响应。

login_redirect.py:

#!/usr/bin/python3``# -*- coding: UTF-8 -*-``   ``from flask import Flask, redirect, url_for, render_template, request``app = Flask(__name__)``   ``@app.route('/')``def index():`     `#使用 render_template() 方法可以渲染模板`    `return render_template('login.html')``   ``@app.route('/login', methods = ['POST', 'GET'])``def login():`    `if request.method == 'POST' and request.form['username'] == 'admin':`        `return redirect(url_for('success'))`        `return redirect(url_for('index'))``   ``@app.route('/logined')``def success():`    `return 'logged in successfully!'``   ``if '__name__' == '__main__':`    `app.run(debug = True)

上面的代码中提到了渲染模板,先卖个关子,接着往下看。

3.Flask渲染模板

说到Flask的渲染,就不得不说Jinja2模板引擎。

(1)Jinja2模板引擎介绍

Jinja 2是一种面向Python的现代和设计友好的模板语言,它是以Django的模板为模型的;它也是Flask框架的一部分。Jinja2会把模板参数提供的相应的值替换了{{…}}块。

(2)渲染模板

Flask会在templates文件夹内寻找模板,所以,在运行文件xxx.py下需要先建一个templates目录。

情况1:一个模块:

/xxx.py``/templates`    `/xxx.html

情况2:一个包:

/xxxxx`   `/__init__.py`   `/templates`       `/xxx.html

(3)模板渲染示例

flask_jinja2.py:

from  flask import  Flask, render_template``   ``app = Flask(__name__)``   ``@app.route('/index')``@app.route('/index/<page_id>')``   ``#使用 render_template() 方法可以渲染模板``def index(page_id=None):`    `return render_template('index.html', page_id=page_id)``   ``if  __name__  ==  '__main__':``   `    `app.run(debug=True)

上述代码中,index()函数并没有直接返回字符串,而是使用render_template()方法来渲染模板,该方法的第一个参数"index.html"是渲染模板的名称,第二个参数“page_id”是要传递到渲染模板的变量,可以传多个变量。

模板index.html:

<!doctype html>``<title>welcom index page</title>``{% if page_id %}`  `<p>This is page {{page_id}}</p>``{% else %}`  `<h2>666</h2>``{% endif %}

为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂这些资料!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

  • 25
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask Web开发从入门精通》是一本介绍如何使用Flask来进行Web开发的书籍。Flask是一个基于Python的轻量级Web框架,它简单易学、灵活且功能强大,适用于各种规模的Web开发项目。 这本书从基础概念开始讲解,详细介绍了Flask的工作原理、核心组件和基本用法。读者可以学习如何搭建一个简单的Flask应用,并通过实例了解路由、模板、表单处理、数据库操作等关键知识点。书中还提供了大量的示例代码和实践项目,帮助读者深入理解Flask的各种功能和技术应用。 同时,《Flask Web开发从入门精通》也从入门精通的过程,逐步介绍了如何构建复杂的Web应用。读者可以学习如何优化性能、处理用户认证和授权、实现RESTful API等高级技术。此外,书中还对与其他常用工具如数据库、前端框架的集成等进行了探讨。 云盘是指云存储服务,它通过网络为用户提供存储和备份服务。在网络时代,云盘成为了人们共享和传输文件的重要方式。对于Flask Web开发从入门精通这样的书籍来说,如果有相关的云盘提供,会方便读者获取书籍的各种资源,如代码示例、实例项目、扩展模块等。 利用云盘存储这些资源,读者可以方便地进行下载、备份和共享。此外,云盘还提供了多种访问方式,可以在不同的设备上随时随地进行访问,方便读者在学习过程中的查阅和使用。 总而言之,《Flask Web开发从入门精通》是一本全面介绍Flask框架的书籍,通过学习这本书,读者可以掌握Flask的基础知识和高级应用技巧。如果提供相应的云盘服务,将对读者的学习和使用带来更多的便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值