我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python编程Flask框架简单使用教程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python编程Flask框架简单使用教程

基础知识

使用框架的优点

稳定性和可扩展性强
可以降低开发难度,提高了开发效率

Flask诞生于2010年,是Armin ronacher用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架
Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQL_Alchemy),都需要用第三方的扩展来实现。
其WSGI工具箱采用Werkzeug(路由模块),模块引擎则使用Jinja2.这两个也是Flask框架的核心

Flask常用扩展包

Flask-SQLalchemy 操作数据库
Flask-script 插入脚本
Flask-migrate 管理迁移数据库
Flask-Session Session存储方式指定
Flask-WTF 表单
Flask-Mail 邮件
Flask-Bable 提供国际化和本地化支持,翻译;
Flask-Login 认证用户状态;
Flask-OpenID 认证;
Flask-RESTful 开发REST API的工具;
Flask-Bootstrap 集成前端Twitter Bootstrap框架
Flask-Moment 本地化日期和时间
Flask-Admin 简单而可扩展的管理接口的框架

扩展列表:http://shouce.jb51.net/flask0.10/extensions.html

1.中文文档(http://shouce.jb51.net/flask0.10/index.html)
2.英文文档(http://flask.pocoo.org/docs/0.11/)

基本格式


from flask import Flask
app=Flask(__name__)
@app.route('/')
def a():
    return 'aa'
app.run()

打开谷歌 网址为你的ip地址后加上:再加上默认的端口号5000 页面展示为aa


app.run(host='0.0.0.0',port=80,debug=True)

host:设置为'0.0.0.0'时在同一个局域网别的电脑ip都能访问,不设置这个参数时只有自己的ip能访问
port:是默认端口号,为80时,网址后面不用加:你设置的端口号,
debug:在代码中修改return的值后debug的值为True时,不用重新执行程序,刷新网页即可刷新内容

拓展


from flask import Flask
app=Flask(__name__)
@app.route('/<orders_id>')    #加个<>  <>里写的内容为参数
def a(orders_id):
    return '%s'%orders_id
app.run()

在谷歌里输入你的ip后加上/你要写的内容 网页展示内容即为你要写的内容
如果限制只能是数字的话 <int:orders_id> <float:orders_id>

return

return 只能返回字符串 和render_template
如果要返回字典之类的 要转成json类型


import json
json.dumps()

from flask import Flask,jsonify

return {'a':'b'}  #报错
return str({'a':'b'})  #纯文本形式,没有数据类型,即没有键值对
return json.dumps({'a':'v'})  #文本形式,但保留了键值对
return jsonify({'a':'v'})  #json类型  有键值对

app.conifg['JSON_AS_ASCII']=False   #将返回的汉字不以ASCII形式返回

app.config.from_pyfile('settings.ini')  # 可以新建settings.ini  在这里写配置 

重定向


from flask import Flask,redirect,url_for
app=Flask(__name__)
@app.route('/')
def a():
    return 'a'
@app.route('/five')
def five():
    return redirect(url_for('a'))   #当你输入网址为你的ip+/+five 时 这个网页展示内容其实就跳转到a()方法里返回的内容

#重定向到黑马官网
@app.route('/demo5')
def demo5():
    return redirect('http://www.itheima.com')

#重定向到自己写的视图函数
#可以直接填写自己url路径
#也可以使用url_for生成指定视图函数所对应的url

@app.route('/demo1')
def demo1():
    return 'demo1'

#重定向
@app.route('/demo5')
def demo5():
    return redirect(url_for('demo1'))

#重定向到带有参数的视图函数
#在 url_for 函数中传入参数

# 路由传递参数
@app.route('/user/<int:user_id>')
def user_info(user_id):
    return 'hello %d' % user_id

# 重定向
@app.route('/demo5')
def demo5():
    # 使用 url_for 生成指定视图函数所对应的 url
    return redirect(url_for('user_info', user_id=100))



取网址参数


from flask import Flask,request,jsonify
app=Flask(__name__)
@app.route('/<id>')
def a(id):
    return '%s'%id

#当你输入的网址为你的ip + / + 你要展现的内容,  页面内容即为你要展现的内容

@app.route('/')
def b():
    name=request.args.get('name')
    id=request.args.get('id')
    return jsonify({'name':name,'id':id})

#当你输入的网址为你的ip + /? +name=小明&id=7  展现的内容即为{'name':小明,'id':7}

content-type

json类型: 'content-type':'application/json'
字符串类型:'content-type':'text/plain'
解析类型:'content-type':'text/html'

cookie\session

获取cookie  request.get.cookie('')
获取session  session.get('')

cookie:指某些网站为了辨别用户身份、进行会话跟踪而储存在用户本地的数据(通常经过加密)
复数形式Cookies
cookie是由服务器生成,发送给客户端浏览器,浏览器会将Cookie的Key/value保存,下次请求同一网站时就发送该cookie给服务器(前提是浏览器设置为启用cookie)
cookie的Key/value可以由服务器端自己定义

Cookie是存储在浏览器中的一段纯文本信息,建议不要存储敏感信息如密码,因为电脑上的浏览器可能被其它人使用
Cookie基于域名安全,不同域名的Cookie是不能互相访问的
如访问itcast.cn时向浏览器中写了Cookie信息,使用同一浏览器访问baidu.com时,无法访问到itcast.cn写的Cookie信息
浏览器的同源策略
当浏览器请求某网站时,会将本网站下所有Cookie信息提交给服务器,所以在request中可以读取Cookie信息


#设置cookie
from flask import Flask,Response
@app.route('/cookie')
    def set_cookie():
        resp=Response("this is to set cookie")
        resp.set_cookie('username','itcast')
        return resp

设置过期时间
@app.route('/cookie')
def set_cookie():
    response=Response('hello world')
    response.set_cookie('username','itheima',3600)    #单位是秒
    return response

获取cookie
from flask import Flask,request
#获取cookie
@app.route('/request')
def resp_cookie():
    resp=request.cookies.get('username')
    return resp

Session
对于敏感重要的信息,建议储存在服务器端,在服务器端进行状态保持的方案就是session
session依赖于cookie
session数据的获取
session:请求上下文对象,用于处理http请求中的一些数据内容
@app.route('/index1')
def index1():
    session['username']='itcast'
    return reddirect(url_for('index'))
@app.route('/')
def index():
    return session.get('username')
记得设置secretz-key='itcast'  这个里面的值自己可以随意设置

删除session
session.pop('')

app.config['PERMANENT_SESSION_LIFETIME']=20  #设置session的时效



flask路由


指定路由地址
#指定访问路径为demo1
@app.route('/demo')
def demo1():
    return 'demo1'

给路由传参 
有时我们需要将同一类URL映射到同一个视图函数处理,比如:使用同一个视图函数来显示不同用户的个人信息

#路由传递参数
@app.route('/user/<user_id>')
def user_info(user_id):
    return 'hello %s'%user_id

输入的网址后缀加的什么 在网页展示的就是什么,下面那个函数括号里必须是上面的参数
路由传递的参数默认当作string处理,也可以指定参数的类型

#路由传递参数
@app.route('user/<int:user_id>')
def user_info(user_id):
    return 'hello %d'%user_id

这里指定int,尖括号中的内容是动态的。在此暂时可以理解为接受int类型的值,实际上int代表使用IntergeConverter去处理url传入的参数

指定请求方式
在Flask中。定义一个路由,默认的请求方式为:
GET
OPTIONS(自带)
HEAD (自带)

如果像添加请求方式,
@app.route('/demo2',methods=['GET','POST'])
def demo2():
    #直接从请求中取到请求方式并返回
    return request.method

request属性

request就是flask中代表当前请求的request对象,期中一个请求上下文变量

(理解成全局变量,在视图函数中直接使用可以取到当前本次请求)
属性      说明                  类型

data        记录请求的数据,并转换为字符串     *
form      记录请求中的表单数据          MultiDict
args        记录请求中的查询参数          MultiDict
cookies     记录请求中的cookie信息          Dict
headers     记录请求中的报文头           EnvironHeaders
method      记录请求使用的HTTP方法           GET/POST
url     记录请求的URL地址          string
files       记录请求上传的文件           *
Request.Form:获取以POST方式提交的数据(接收Form提交来的数据);
Request.QueryString:获取地址栏参数(以GET方式提交的数据)
Request:包含以上两种方式(优先获取GET方式提交的数据),它会在QueryString、Form、ServerVariable中都搜寻一遍。

requests模块发送请求有data、params两种携带参数的方法。

params在get请求中使用,data在post请求中使用。params是往url后面添加参数,data是指POST请求传入的字典或对象

上下文

上下文:相当于一个容器,保存了Flask程序运行过程中的一些信息
Flask中有两种上下文,请求上下文和应用上下文

请求上下文(request context)
思考:在试图函数中,如何取到当前请求的相关数据?比如:请求地址,请求方式,cookie等等
在flask中,可以直接在视图函数中使用request这个对象进行获取相关数据,而request就是请求上下文的对象,保存了当前本次请求的相关数据,请求上下文对象有:request,session

request:
封装了HTTP请求的内容,针对的是http请求。举例:user=request.args.get('user'),获取的是get请求的参数

session:
用来记录请求会话中的信息,针对的是用户信息,举例:session['name']=user.id,可以记录用户信息,还可以通过session.get['name']获取用户信息

应用上下文对象有:current_app , g
current_app
应用程序上下文用于存储应用程序中的变量,可以通过current_app.name打印当前app的名称,也可以在current_app中存储一些变量,例如:
应用的启动脚本是哪个文件,启动时指定了哪些参数
加载了哪些配置文件,导入了哪些配置
连了那个数据库
有哪些public的工具类,常量
应用跑在那个机器上,IP多少,内存多大
current_app.name
current_app.text_value='value'

g变量
g作为flask程序全局的一个临时变量,充当着中间媒介的作用,我们可以通过它传递一些数据,g保存的是当前请求的全局变量,不同的请求会有不同的全局变量,通过不同的thread id区别

g.name='abc'
注意:不同的请求,会有不同的全局变量

两者区别:
请求上下文:保存了客户端和服务器交互的数据
应用上下文:flask应用程序运行过程中,保存的一些配置信息,比如程序名、数据库连接、应用信息等
上下文中的对象只能在指定上下文使用,超出范围不能使用, 请求上下文和应用上下文原理实现:http://shouce.jb51.net/flask0.10/appcontext.html

注册路由


@app.route('/')
def hello():
    #会返回status code
    #content-type 在http headers里
    #content-type=text/html  #默认值 当成html格式来解析
    #将返回的结果封装成一个Response对象
    headers={
        # 'content-type':'text/plain',  #当成普通的字符串来解析

        'content-type':'application/json'   #返回json类型
    }
    # response=make_response('<html></html>',200)    #301是重定向
    # response.headers=headers
    # return response
    # return '<html></html>'
    return '<html></html>',200,headers

# app.add_url_rule('/hello',view_func=hello)   #也可以这样来注册路由的

以上就是python编程Flask框架简单使用教程的详细内容,更多关于python教程Flask框架使用的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python编程Flask框架简单使用教程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

在Python的Flask中使用WTForms表单框架的基础教程

下载和安装 安装 WTForms 最简单的方式是使用 easy_install 和 pip:easy_install WTForms # or pip install WTForms你可以从 PyPI 手动 下载 WTForms 然后运行
2022-06-04

在Python程序和Flask框架中使用SQLAlchemy的教程

ORM 江湖 曾几何时,程序员因为惧怕SQL而在开发的时候小心翼翼的写着sql,心中总是少不了恐慌,万一不小心sql语句出错,搞坏了数据库怎么办?又或者为了获取一些数据,什么内外左右连接,函数存储过程等等。毫无疑问,不搞懂这些,怎么都觉得变
2022-06-04

Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程

使用Flask-SQLAlchemy管理数据库 Flask-SQLAlchemy是一个Flask扩展,它简化了在Flask应用程序中对SQLAlchemy的使用。SQLAlchemy是一个强大的关系数据库框架,支持一些数据库后端。提供高级的
2022-06-04

在Python的Flask框架中构建Web表单的教程

尽管Flask的request对象提供的支持足以处理web表单,但依然有许多任务会变得单调且重复。表单的HTML代码生成和验证提交的表单数据就是两个很好的例子。 Flask-WTF扩展使得处理web表单能获得更愉快的体验。该扩展是一个封装了
2022-06-04

Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程

我们在升级系统的时候,经常碰到需要更新服务器端数据结构等操作,之前的方式是通过手工编写alter sql脚本处理,经常会发现遗漏,导致程序发布到服务器上后无法正常使用。 现在我们可以使用Flask-Migrate插件来解决之,Flask-M
2022-06-04

Python的Flask框架标配模板引擎Jinja2的使用教程

Jinja2需要Python2.4以上的版本。 安装 按照Jinja有多种方式,你可以根据需要选择不同的按照方式。 使用easy_install 或pip: #sudo easy_install Jinja2 #sudo pip i
2022-06-04

Python Pandas的简单使用教程

一、  Pandas简介 1、Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大
2022-06-02

Python的Flask框架中集成CKeditor富文本编辑器的教程

CKeditor是目前最优秀的可见即可得网页编辑器之一,它采用JavaScript编写。具备功能强大、配置容易、跨浏览器、支持多种编程语言、开源等特点。它非常流行,互联网上很容易找到相关技术文档,国内许多WEB项目和大型网站均采用了CKed
2022-06-04

Flask的图形化管理界面搭建框架Flask-Admin的使用教程

Flask-Admin是Flask框架的一个扩展,用它能够快速创建Web管理界面,它实现了比如用户、文件的增删改查等常用的管理功能;如果对它的默认界面不喜欢,可以通过修改模板文件来定制; Flask-Admin把每一个菜单(超链接)看作一个
2022-06-04

butterfly简单使用教程

butterfly 可以让你在浏览器中显示日常终端,喜欢吗?一起来试试吧。安装butterfly
2023-06-05

MySQL使用简单教程

本文通过演示如何使用MySQL客户机程序创建和使用一个简单的数据库,允许连接到MySQL服务器、运行查询和查看结果。 mysql也可以在批处理模式下使用:预先将查询放在文件中,然后告诉mysql执行文件的内容。 要查看mysql提供的选项列
2023-08-17

w3af简单使用教程

w3af简单使用教程w3af是一个Web应用程序***和检查框架.该项目已超过130个插件,其中包括检查网站爬虫,SQL注入(SQL Injection),跨站(XSS),本地文件包含(LFI),远程文件包含(RFI)等.该项目的目标是要建
2023-01-31

使用Python编写简单的画图板程序的示例教程

从这次开始,我会由简单到困难(其实也不会困难到哪里去)讲几个例程,每一个例程都是我自己写(或者修改,那样的话我会提供原始出处)的,都具有一定的操作性和娱乐性。例程中汇尽量覆盖到以前所讲的pygame中方方面面,如果看到哪一步不明白,那就再回
2022-06-04

python中turtle库的简单使用教程

Turtle库是Python中的一个绘图库,它可以在画布上绘制各种形状和图案。下面是一个简单的使用教程:1. 导入turtle库:在Python代码中,首先需要导入turtle库,可以使用以下代码进行导入:```pythonimport t
2023-08-17

python-docx的简单使用示例教程

这篇文章主要介绍了python-docx的简单使用,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-18

simple-pytest 框架使用教程

simple-pytest是轻量级的Python测试框架,提供直观API和简易流程。安装后,使用@test装饰器声明测试方法,并通过simple-pytest运行测试。simple-pytest提供断言、固定装置等功能,适用于快速编写单元测试、小型项目原型设计和持续集成自动化测试。
simple-pytest 框架使用教程
2024-04-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录