Flask框架的使用

  我们在搭建一下接口测试平台或者管理一些脚本的时候,通常希望有一个web页面来维护,今天就介绍一款使用python编写的轻量级Web应用框架,自带开发用服务器和debugger,简单易用。

Flask是依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。

一、必备环境

1.python开发环境,给出一个Python 下载地址:https://www.python.org/,自行百度安装教程即可。

2.flask安转:pip install flask

二、入门hello world

1.例子:
#test.py
from flask import Flask

app = Flask(__name__)

@app.route("/<name>")def index(name):     p = "hello %s !"%name     print(p)     return  p

if __name__ == ‘__main__‘:      app.run(debug=True,port=5555)
2.运行test.py

3.访问

三、升级版

1.目录结构

requestTest.py

test.py

templates/index.html

templates/user.html

2.访问过程

3.运行结果

4.过程分析

from flask import Flask
from flask import render_template,request

app = Flask(__name__,template_folder=‘t‘)

@app.route("/")
def index():
     return  render_template("index1.html")

@app.route("/login",methods=[‘GET‘,‘POST‘])
def login():
    if request.method==‘POST‘:
        username = request.form.get(‘username‘)
        password = request.form.get(‘password‘)
        if username == ‘sogou‘ and password==‘123‘:
            return ‘<h1>welcome,%s</h1>‘%username
        else:
            return ‘<h1>登录失败</h1>‘
@app.route("/user/<name>")
def user(name):
    return render_template("user1.html",name=name)
if __name__ == ‘__main__‘:
      app.run(debug=True,port=5555)

text.py

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="/login" method="post">
        username:<input type="text" name="username">
        password:<input type="password" name="password">
        <input type="submit" id=""submit>
    </form>
</body>
</html>

index1

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>hello,{{name}}}</h1>
</body>
</html>

user1

 以上就是MVC模型。Controller负责业务逻辑,如特定业务分发给谁处理,检查用户名、登录信息等。View负责显示逻辑,是最终输出的是用户看到的HTML,Model是用来传给View的,View在替换变量的时候,就可以从Model中取出相应的数据。以上使用了render_template模板,render_template的功能是引入.html,同时根据后面传入的参数,对html进行修改渲染。

四.运行解释

1.app = Flask(__name__)

创建Flask对象app,Flask类的构造函数只有一个必须指定的参数,即程序主模块或包的名字。在大多数程序中,Python的__name__变量就是所需要的值。

[email protected](‘/‘)

web浏览器把请求发送给Web服务器,Web服务器再把请求发送给Flask程序实例。程序实例需要知道对每个URL请求运行哪些代码,所以保存了一个URL到Python函数的映射关系。处理URL和函数之间的关系的程序称为路由。在Flask程序中定义路由的最简便方式,是使用程序实例提供的app.route修饰器,把修饰的函数注册为路由。route()装饰器告诉 Flask什么样的URL 能触发我们的函数。这和Java中的注释有异曲同工之妙。修饰器是Python语言的标准特性,可以使用不同的方式修改函数的行为。惯常用法是使用修饰器把函数注册为事件的处理程序。

3.def index():函数

index()函数放在@app.route(‘/‘)后面,所以就是把index()函数注册为路由。如果部署程序的服务器域名为http://127.0.0.1:5000/,在浏览器中访问http://127.0.0.1:5000/后,会触发服务器执行index()函数。

[email protected](‘/user/‘)

同@app.route(‘/‘),如果部署程序的服务器域名为http://127.0.0.1:5000/,在浏览器中访问http://127.0.0.1:5000/后,会触发服务器执行下方修饰函数。

5.app.run(debug=True)

程序实例用run方法启动Flask继承Web服务器。

6.if __name__ == ‘__main__‘

当Python解释器,读py文件,它会执行它发现的所有代码。在执行代码之前,它会定义一些变量。例如,如果这个py文件就是主程序,它会设置__name__变量为"__main__"。如果这个py被引入到别的模块,__name__会被设置为该模块的名字。

五、flask其他功能

1.模板渲染

用Python生成HTML相当繁琐,因为你必须手动对HTML做转义来保证应用的安全。为此,Flask 配备了Jinja2模板引擎。可以使用render_template()方法来渲染模板。需要做的一切就是将模板名和你想作为关键字的参数传入模板的变量。这里有一个展示如何渲染模板的简例:

from flask import render_template

@app.route(‘/hello/‘)
@app.route(‘/hello/<name>‘)
def hello(name=None):
    return render_template(‘hello.html‘, name=name)

Flask 会在templates文件夹里寻找模板。所以如果你的应用是个模块,这个文件夹应该与模块同级,如果它是一个包,那么这个文件夹作为包的子目录。

2.重定向和错误

你可以用redirect()函数把用户重定向到其它地方。放弃请求并返回错误代码,用abort()函数。默认情况下,错误代码会显示一个黑白的错误页面。如果你要定制错误页面,可以使用errorhandler()装饰器

from flask import abort, redirect, url_for

@app.route(‘/‘)
def index():
    return redirect(url_for(‘login‘))

@app.route(‘/login‘)
def login():
    abort(401)
    this_is_never_executed()

@app.errorhandler(404)
def page_not_found(error):
    return render_template(‘page_not_found.html‘), 404

3.日志记录

Flask 0.3 开始,Flask就已经预置了日志系统

app.logger.debug(‘A value for debugging‘)
app.logger.warning(‘A warning occurred (%d apples)‘, 42)
app.logger.error(‘An error occurred‘)

4.会话

Session对象在不同请求间存储特定用户的信息。它是在Cookies的基础上实现的,并且对Cookies进行密钥签名。这意味着用户可以查看你Cookie的内容,但却不能修改它,除非用户知道签名的密钥。

from flask import Flask, session, redirect, url_for, escape, request

app = Flask(__name__)

@app.route(‘/‘)
def index():
    if ‘username‘ in session:
        return ‘Logged in as %s‘ % escape(session[‘username‘])
    return ‘You are not logged in‘

@app.route(‘/login‘, methods=[‘GET‘, ‘POST‘])
def login():
    if request.method == ‘POST‘:
        session[‘username‘] = request.form[‘username‘]
        return redirect(url_for(‘index‘))
    return ‘‘‘
        <form action="" method="post">
            <p><input type=text name=username>
            <p><input type=submit value=Login>
        </form>
    ‘‘‘

@app.route(‘/logout‘)
def logout():
    # remove the username from the session if it‘s there
    session.pop(‘username‘, None)
    return redirect(url_for(‘index‘))

# set the secret key.  keep this really secret:
app.secret_key = ‘A0Zr98j/3yX R~XHH!jmN]LWX/,?RT‘


原文地址:https://www.cnblogs.com/maplethefox/p/11840200.html

时间: 2024-10-07 00:52:08

Flask框架的使用的相关文章

Flask框架获取用户IP地址的方法

本文实例讲述了python使用Flask框架获取用户IP地址的方法.分享给大家供大家参考.具体如下: 下面的代码包含了html页面和python代码,非常详细,如果你正使用Flask,也可以学习一下最基本的Flask使用方法. python代码如下: from flask import Flask, render_template, request # Initialize the Flask application app = Flask(__name__) # Default route,

Flask 框架构建

Flask 框架构建,目标构建成Django类似的结构 一. 先看看构建后的效果 # 第一次初始化 python manage.py db init # 生成数据库版本 python manage.py db migrate # 将定义的模型更新到数据库 python manage.py db upgrade 二. 看下范例代码 1.根目录下的manage.py文件: 2. electron/__init__.py  一些初始化工作放在这里了,用到了一些插件flask-sqlalchemy,fl

Flask框架的学习与实战(一):开发环境搭建

Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2.很多功能的实现都参考了django框架.由于项目需要,在此记录下学习的过程及心得. 工欲善其事,必先利其器.就从搭建一套flask开发环境开始flask之旅吧. 一.平台说明 操作系统:window 7  64bit  数据库:mysql5.6  python:v2.7  开发集成软件:PyCharm5.0 二.开发环境搭建 1.安装flask框架包 1

Flask 框架入门

Flask Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . 安装 Flask 依赖两个外部库, Werkzeug和 Jinja2.Werkzeug 是一个 WSGI 工具集,它是 web 应用程序和用于开发和部署的服务器之间的标准接口.Jinja2是Python下一个被广泛应用的模版引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能.其中最显著的一个是增加了沙箱执行功

使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(四)——对 run.py 的调整

使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(三)——使用Flask-Login库实现登录功能 为了方便以后的应用切换,所以需要对 run.py 里的代码进行调整下. 1.在/demo 目录下创建 app_start.py /demo/app_start.py # config=utf-8 from demo

使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(三)——使用Flask-Login库实现登录功能

使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 本次示例的源码下载:点击下载 Flask-Login 库的中文文档:点击进入 Flask-Login 库的新版英文文档:点击进入 一.导入并初始化 Flask-Login 库 在项目根目录下的/demo/__init__.py 文件的头部,import 进 flask_login 库 from flask_login imp

Flask框架:(一、安装)

Flask 依赖于两个外部库:Werkzeug 和 Jinja2 . Werkzeug 是一个 WSGI (在 web 应用和多种服务器之间开发和部署的标准 Python 接口) 的工具集,Jinja2 负责渲染模板. 1.安装 参考:http://blog.csdn.net/qwiwuqo/article/details/8970621 Flask安装的前提条件 1.已安装python2.x版本 2.已安装easy_install 在安装flask之前,你必须要先安装python和easy_i

flask框架+pygal+sqlit3搭建图形化业务数据分析平台

一. 前言 先说下主要的框架和主要的图形库的特点:(个人见解) Django:python开发的一个重量级的web框架,集成了MVC和ORM等技术,设计之初是为了使开发复杂的.数据库驱动的网站变得简单,然而由于种种原因很少有企业用来开发大型网站,而是拿来做运维开发的很多.其注重组件的重用性和"可插拔性". Flask:python开发的一个轻量级的web框架,它使用简单的核心,用 extension 增加其他功能,扩增的弹性很好,并且上手比较容易. Echars:百度开源的一个图像库,

Flask框架2

Flask框架的学习与实战(二):实战小项目 昨天写了一篇flask开发环境搭建,今天继续,进行一个实战小项目-blog系统. blog系统很简单,只有一个页面,然后麻雀虽小五脏俱全.这里目的不是为了做项目而做项目,这篇文章本意是通过这次练习传达以下几个知识点: 1.从全局上了解flask项目的目录结构 2.flask项目的运行机制 3.flask框架实现MVC架构 4.flask-sqlalchemy 操作mysql数据库 一.新建项目:blog系统 在pycharm中,新建flask项目,如

基于Flask框架的Python web程序的开发实战 &lt;一&gt; 环境搭建

最近在看<Flask Web开发基于Python的Web应用开发实战>Miguel Grinberg著.安道译 这本书,一步步跟着学习Flask框架的应用,这里做一下笔记 电脑只安装一个Python2.7就行了,用的IDE还是官方那个跟记事本差不多的编辑器,先原始一点,以后再用PyCharm开发,我系统是Win8.1 x64 一:虚拟环境配置 虚拟环境使用第三方工具virtualenv创建,打开cmd,输入virtualenv命令来检测是否已经安装,我已经装过了,所以会提示:You must