iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Hello Flask
  • 319
分享到

Hello Flask

Flask 2023-01-31 00:01:41 319人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

flask简介 Flask是一个使用python编写的轻量级WEB应用框架。基于Werkzeug WSGI工具箱和Jinja2 模板引擎。Flask使用BSD授权。Flask被称为“microframework”,因为它使用简单的核心,

flask简介


Flask是一个使用python编写的轻量级WEB应用框架。基于Werkzeug WSGI工具箱和Jinja2 模板引擎。Flask使用BSD授权。
Flask被称为“microframework”,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。
Flask英文翻译为瓶子,烧瓶,与另一个web框架Bottle同义,意在表示另一种容器,另一个框架。而且他们两个也有一些相似的地方。

第一个Flask程序


from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return '<h1>Hello,Flask<h1/>'
app.run('127.0.0.1',8000)

运行后可见控制台输出:

  • Serving Flask app “hello” (lazy loading)
    • Environment: production
      WARNING: Do not use the development server in a production environment.
      Use a production WSGI server instead.
    • Debug mode: off
    • Running on Http://127.0.0.1:8000/ (Press CTRL+C to quit)

URL路由

Flask路由采用装饰器的方式


@app.route('/')
  def index():

绑定多个路由


@app.route('/index')
@app.route('/')
def index():

动态路由


@app.route('/index/<name>')
def index(name):

name会作为参数传入视图函数
也可以为参数设置默认值:


@app.route('/index',defaults={'name':'sfencs'})
@app.route('/index/<name>')
def index(name):

它其实相当于


@app.route('/index')
@app.route('/index/<name>')
def index(name='sfencs'):

还可以指定参数的类型:


@app.route('/index/<int:num>')
def index(num):

这样路由只会匹配index后是数值类型参数的url,并且还会把num转换为int型
除了int之外还有path,string,float,any,uuid等

指定请求方式的路由


@app.route('/index/<int:num>',methods=['get'])
def index(num):

method参数是一个列表

使用url_for()获取url

当视图函数绑定的路由发送改变时,我们可能在其他使用该路径的地方一个一个手动修改,这种硬编码的方式降低了代码的易用性,这种情况可以使用url_for()函数来获取url
url_for()函数的参数为视图函数名,也可以在路由的装饰器中指定endpoint参数设置别名
例如


@app.route('/index')
def aaa():

那么url_for(’aaa‘)就是’/index’
当然如果是有参数的路由,那么需要在url_for()函数中传入参数
例如


@app.route('/index/<int:num>')
def aaa(num):

url_for函数就应该写为:url_for(‘aaa’,num=123)
url_for()函数默认生成的是相对URL,要想生成绝对URL需要加入参数_external=True

http请求与响应

请求

如何在视图函数中获取请求,首先需要引入request对象


from flask import Flask,request

在视图函数中可以直接通过request获得属性或方法
举个简单的例子


@app.route('/index/<int:num>',methods=['get'])
def index(num):
    print(request.method)
    print(request.args.get('name','sfencs'))
    return '<h1>Hello,Flask<h1/>'

request中的方法和属性未来都会对我们很有用,这里就不一一介绍了。

响应

1.普通响应

return '<h1>Hello,Flask<h1/>'

return '<h1>Hello,Flask<h1/>',200  #可以设置状态码
2.重定向

return redirect(url_for('index'))
3.错误响应
abort(404)

abort()函数直接返回错误响应,后面的代码不再执行

4.返回响应对象

response = make_response('<h1>Hello,Flask<h1/>')
response.mimetype = 'text/html'
return response

通过设置mimetype可以返回不同类型的数据,常用的有纯文本,html,xml,JSON
返回json格式数据时Flask提供一种更简洁的方式


return jsonify({'name':'sfencs'})

这一个东西把生成response对象,设置数据类型,json序列化都做完了。

请求钩子

请求钩子是在视图函数处理请求的前或者后的阶段进行的处理函数
Flask默认实现的五种请求钩子:

  • before_first_request 处理第一个请求之前
  • before_request 处理请求之前
  • after_request 处理请求之后
  • after_this_request 在视图函数内注册一个函数,会在这个请求结束后运行
  • teardown_request 在请求结束后,如果有异常也会执行的钩子,它在所有钩子中最后一个执行,需要传入异常对象

钩子通过装饰器注册,比如

@app.before_request
def func():
  pass

after_request和after_this_request的钩子必须接受一个响应类对象做参数,最后并将其返回

配置变量

Flask中,配置变量通过Flask对象的config属性配置与获取
在Flask对象的源码中看到config中已经存储了很多默认值


default_config = ImmutableDict({
    'ENV':                                  None,
    'DEBUG':                                None,
    'TESTING':                              False,
    'PROPAGATE_EXCEPTIONS':                 None,
    'PRESERVE_CONTEXT_ON_EXCEPTION':        None,
    'SECRET_KEY':                           None,
    'PERMANENT_SESSION_LIFETIME':           timedelta(days=31),
    'USE_X_SENDFILE':                       False,
    'SERVER_NAME':                          None,
    'APPLICATION_ROOT':                     '/',
    'SESSION_COOKIE_NAME':                  'session',
    'SESSION_COOKIE_DOMaiN':                None,
    'SESSION_COOKIE_PATH':                  None,
    'SESSION_COOKIE_HTTPONLY':              True,
    'SESSION_COOKIE_SECURE':                False,
    'SESSION_COOKIE_SAMESITE':              None,
    'SESSION_REFRESH_EACH_REQUEST':         True,
    'MAX_CONTENT_LENGTH':                   None,
    'SEND_FILE_MAX_AGE_DEFAULT':            timedelta(hours=12),
    'TRAP_BAD_REQUEST_ERRORS':              None,
    'TRAP_HTTP_EXCEPTIONS':                 False,
    'EXPLAIN_TEMPLATE_LOADING':             False,
    'PREFERRED_URL_SCHEME':                 'http',
    'JSON_AS_ASCII':                        True,
    'JSON_SORT_KEYS':                       True,
    'JSONIFY_PRETTYPRINT_REGULAR':          False,
    'JSONIFY_MIMETYPE':                     'application/json',
    'TEMPLATES_AUTO_RELOAD':                None,
    'MAX_COOKIE_SIZE': 4093,
})

它其实是字典的子类,所以我们可以以字典的方式操作它


app.config['SWITCH'] = 'on'
print(app.config['SWITCH'])

也可以使用update方法一次添加多个配置


app.config.update(SWITCH_A=True,SWITCH_B=False)

还可以通过类的方式进行配置

app.config.from_object("settings.DebuGConfig")

在同级目录建立settings.py

class DebugConfig(Config):
     DEBUG = True

最后要注意配置变量的名称必须要大写,小写的变量不会被读取

debug模式

如运行时控制台的输出

  • Debug mode: off

可知默认debug模式是关闭的,所以当访问路径的程序出现错误的时候页面会显示

若要开启debug模式,可在run方法添加debug=True参数


app.run('127.0.0.1',8000,debug=True)

此时我们故意使程序出错,即将视图函数多添加一个参数,再次访问url,会出现

这个页面对于我们调试错误非常有用,同时还允许我们在页面上执行Python代码,我们只需要点击错误最右边的命令行图标
这时会弹出一个窗口让我们输入PIN码,这个可以在程序刚允许时控制台输出找到

输入后就可在页面执行代码了

--结束END--

本文标题: Hello Flask

本文链接: https://www.lsjlt.com/news/181651.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Hello Flask
    Flask简介 Flask是一个使用Python编写的轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2 模板引擎。Flask使用BSD授权。Flask被称为“microframework”,因为它使用简单的核心,...
    99+
    2023-01-31
    Flask
  • java 输出hello world
    在 Java 中,可以使用 System.out.println 来输出 "hello world"。 例如: public class Main { public static void main(String[] args) ...
    99+
    2023-09-10
    java jvm 开发语言 eclipse ide
  • hello world java代码
    public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); }} ...
    99+
    2023-09-24
    java jvm c++ 开发语言 eclipse
  • JavaWeb 入门:Hello Servlet
    目录Servlet概述HelloServlet总结Servlet 概述 serlvet sun公司 开发动态web 的一门技术。 Servlet(Server Ap...
    99+
    2022-11-12
  • Python程序--hello worl
    第一个程序从“你好,世界!”开始Hello world2.7版本>>> print "hello,world!"hello, world!3.5版本>>> print("hello,world!")hel...
    99+
    2023-01-31
    程序 Python worl
  • Flask
    python三大框架预览 Python Web框架分类 功能分类: a:收发消息相关(socket) b:根据不同的URL执行不同的函数(业务逻辑相关的) c:实现动态网页(字符...
    99+
    2023-01-30
    Flask
  • 如何实现JS中‘hello’与new String(‘hello’)引出的问题
    小编给大家分享一下如何实现JS中‘hello’与new String(‘hello’)引出的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起...
    99+
    2022-10-19
  • windows hello怎么开启
    要开启Windows Hello,您需先确保以下条件已满足:1. 您的计算机必须运行Windows 10操作系统。2. 您的计算机必...
    99+
    2023-09-17
    windows
  • spring-data-mongodb-hello-world-example
    http://www.mkyong.com/mongodb/spring-data-mongodb-hello-world-example/ ...
    99+
    2022-10-18
  • [Python学习记录]——Hello
       一直以来主要使用Java语言进行编程,开始学习Python起源于2012年亚马逊双十一购书大优惠的活动中为了补齐优惠额度,正好亚马逊给推荐《Python入门基础》一书。   一年时间过去了,书是翻了翻,看了看,心里和Java做了写比...
    99+
    2023-01-31
    Python
  • Java怎么写Hello World
    本篇内容主要讲解“Java怎么写Hello World”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么写Hello World”吧!问HelloWorld问题的人实在是太多了,而且经常...
    99+
    2023-06-03
  • Java的Hello World详解
    目录第一个程序一、安装java环境二、编写第一个程序java程序的组成 总结第一个程序 一、安装java环境 开始学习java之前,我们的第一步就是安装java环境,即常说...
    99+
    2022-11-12
  • windows hello如何设置
    这篇文章主要介绍“windows hello如何设置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“windows hello如何设置”文章能帮助大家解决问题。windows  hello设...
    99+
    2023-07-01
  • windows hello如何开启
    这篇文章主要介绍“windows hello如何开启”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“windows hello如何开启”文章能帮助大家解决问题。windows  hello ...
    99+
    2023-07-01
  • windows hello是什么?windows hello刷脸解锁使用视频教程
      微软宣布了一项Windows 10重要特性:windows hello,那么windows hello刷脸解锁怎么使用今天小编就为大家献上windows hello刷脸解锁使用视频教程,一起来看看吧! windows...
    99+
    2023-06-12
    windows 解锁 视频教程 hello
  • Flask 扩展系列之 Flask-R
    简介 安装 快速入门 一个最小的 api 例子 资源丰富的路由 端点 参数解析 数据格式化 完整 TODO 应用例子 Flask-RESTful是一个Flask的扩展,它增加了对快速构建REST APIs的支持。它是一种轻...
    99+
    2023-01-31
    系列之 Flask
  • Flask-Mail
    WOW! 我的大号QQ收到了小号QQ的邮件!   小玩Flask-Mail 先到小号邮箱开启服务并获取获取授权码  https://jingyan.baidu.com/article/b0b63dbf1b2ef54a49307054.h...
    99+
    2023-01-30
    Flask Mail
  • Flask-Script
    安装pip install Flask-Script -i https://pypi.douban.com/simple    Flsak加入flask-script # -*- coding: utf-8 -*-   ...
    99+
    2018-12-13
    Flask-Script
  • Flask Blueprint
    Blueprint简介 Blueprint它是Flask项目的一种组件式开发,可以在一个应用内或跨越 多个项目共用蓝图。使用蓝图可以极大地简化大型应用的开发难度,也为Flask扩展 提供了一种在应用中注册服务的集中式机制。 模块化管理程序...
    99+
    2023-01-31
    Flask Blueprint
  • 永远的开始:Hello world
    打开Pycharm新建一个项目File--New Projcet在D盘新建一个文件夹python3_studyLocation这里选择一下路径就好了,点击下面的Create创建创建后好后,多了一行右键点击python3_study,New-...
    99+
    2023-01-30
    world
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作