IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【Flask笔记】 -> 正文阅读

[Python知识库]【Flask笔记】

目录

一、Flask是什么?

二、Flask常用扩展包

三、第一个Flask程序

四、路

五、response对象

一、Flask是什么?

Flask是Python语言基于Werkzeug工具箱编写的轻量级Web开发框架,其几乎所有功能都要用到扩展,其WSGI工具箱采用Werkzeug(路由模块),模板引擎使用Jinja2,是一种更为灵活的开发框架

二、Flask常用扩展包

1.操作数据库:Flask-SQLalchemy

2.管理迁移数据库:Flask-migrate

3.邮件:Flask-Mail

4.表单:Flask-WTF

5.提供国际化和本地化支持,翻译:Flask-Bable

6.插入脚本:Flask-script

7.认证用户状态:Flask-Login

8.认证:Flask-OpenID

9.开发REST API的工具:Flask-RESTful

10.集成前端Twitter Bootstrap框架:Flask-Bootstrap

11.本地化日期和时间:Flask-Moment

12.简单可扩展的管理接口的框架:Flask-Admin

中文文档介绍Flask:

http://docs.jinkan.org/docs/flask/

三、第一个Flask程序

#导入Flask扩展
from flask import Flask
#创建flask应用程序实例
app=Flask(__name__)
#定义路由以及视图函数
#flask中定义路由是通过装饰器实现
@app.route('/')
def index():
    return 'Hello,flask!Hello,flask!'
#启动程序
if __name__ == '__main__':
    #执行了app.run,就会将flask程序运行在一个简易的服务器(Flask提供,用于测试)
    #host给出允许外网访问
    app.run()

debug模式:布尔类型,默认为False

1>debug=True:当代码改变时,服务器会重新加载最新代码,此模式适用于开发环境development

2>debug=False:只会加载出第一遍的代码,代码改变不会自动加载?,适用于生产环境production

config:修改配置

app.config['ENV']='development'
app.config['DEBUG']='True'

可以将默认的production环境修改为development环境

app.config.fome_object(settings):可以将setting中写好代码直接导入

Flask程序运行过程:

1.当客户端想要获取资源时,一般会通过浏览器发起HTTP请求
2.此时,Web服务器会把来自客户端的所有请求都交给Flask程序实例
3.程序实例使用Werkzeug来做路由分发(URL请求和视图函数之间的对应关系)?
4.根据每个URL请求,找到具体的视图函数并进行调用,在Flask程序中,路由的实现一般是通过程序实例的装饰器实现
5.?Flask调用视图函数后,可以返回两种内容:
1>字符串内容:将视图函数的返回值作为响应的内容,返回给客户端(浏览器)
2>HTML模版内容:获取到数据后,把数据传入HTML模板文件中,模板引擎负责渲染HTTP响应数据,?然后返回响应数据给客户端(浏览器)

四、路由

1.常见的HTTP状态码

1.200-请求成功

2.301-资源(网页等)被永久转移到其它(URL)

3.404-请求的资源(网页等)不存在

4.500-内部服务器错误(代码问题)

HTTP状态码分类:HTTP状态码由三个十进制数字组成,第一个数字为状态码类型,后俩个无分类作用

分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误

2.路由:是指分组从源到目的地时,决定端到端路径的网络范围的进程,现代web应用都使用有意义的URL,通常使用route()装饰器将函数绑定到URL

@app.route('/index')
def index():
    return 'Hello,flask!'

等效于

def index():
    return 'Hello,flask!'
app.add_url_rule('/index,view_func=index')

请求方式限定:L路由默认只支持GET,如果需要增加需要使用methods参数指定可接收的请求方式

@app.route('/',methods=['GET','POST'])

3.路由的变量规则:通过将URL一部分标记为<variable_name>就可以在URL中添加变量,通过使用<converter:variable_name>可以选择性添加一个转换器,为变量指定规则(变量默认为string类型)

转换器类型说明
string接收任何不包含斜杠的文本
int接收正整数
float接收正浮点数
path类似string但可以包含斜杠
uuid接收UUID字符串

例:加法运算

from flask import Flask
app=Flask(__name__)
@app.route('/add/<int:num>')
def get_order_id(num):
    print (type(num))
    result=num+1
    return str(result)#结果返回只能是字符串/字典/元组/Response instance/WSGI callable
if __name__=='__main__':
    app.run()

注意:

1>路由中若添加了'/'即@app.route('/progects/),无论请求的URL是否带有‘/’都可以执行视图函数如果请求的是没有‘/’浏览器做了一次重定向

2>若路由中未添加‘/’,@app.route('/progects)但是请求的URL中添加即http://127.0.0.1:5000/progect/,那么显示Not Found

五、Response对象

1.return 后面直接返回字符串实际也是做了一个response对象的封装,最终返回结果还是response对象

from flask import Flask,Response
app=Flask(__name__)
app.config['ENV']='development'
app.config['DEBUG']='True'
@app.route('/index1')
def index1():
    return Response('今天星期几?')
if __name__=='__main__':
    app.run()

2.通过make_response,自定义响应头、响应体和状态码来自定义response对象

from flask import Flask, Response, make_response
app=Flask(__name__)
app.config['ENV']='development'
app.config['DEBUG']='True'
@app.route('/index2')
def index2():
    content='''
    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
这是一个模板<br>
这是一个首页<br>
</body>
</html>
    '''
    response = make_response(content)
    response.headers['mytest']='abcd'
    return response
if __name__ == '__main__':
    app.run()
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:10:10  更:2022-09-13 11:10:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 9:39:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码