flask快速入门

概述:

Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 (类似于php中的smarty,旨在让程序实现界面与数据分离)。

Flask使用 BSD 授权。

WSGI(Python Web Server Gateway Interface),是Python应用程序或框架和Web服务器之间的一种接口,已经被广泛接受。类似于java中的servelet api。

一个最简单的应用:

from flask import Flask
app = Flask(__name__)        #创建一个flask实例
@app.route('/')              #路由规则,即符合规则的url请求将会触发此函数
def hello_world():
    return 'Hello World!'
if __name__ == '__main__':   #如果是已主程序的方式启动(不是以导入模块的方式),则运行flask实例
    app.run()                #app.run(debug=True),即可开启debug模式

直接运行上面的脚本:python test.py,默认 http://127.0.0.1:5000 为服务地址。

通过url进行参数传递:

@app.route('/hello/<name>')   # <name>为传递的参数
def hello(name=None):
    return render_template('src/hello.html',name=name)

hello.html的内容:

<!doctype html>
<title>Hello from Flask</title>
{% if name %}
  <h1>Hello {{ name }}!</h1>
{% else %}
  <h1>Hello World!</h1>
{% endif %}

其中,name作为传入的变量。render_template()方法可以用来直接渲染模板,免去繁琐的html生成工作。render_template方法只需传入需要渲染的模板名和传递个模板引擎(flask采用的是Jinja2)的参数。模板名需要放置在项目根目录下的templates目录。

HTTP方法:

flask中一个route默认只应答http的get方法。可以通过methods参数指定具体能够应答的http方法。

@app.route('/test', methods=['POST','GET'])    # 可以应答POST和GET方法
def test():
    print(request.method)                      # request对象封装了http的request请求
    print(request.form['username'])            # form为前端的表单,request.form属于dict类型
    return 'response back'                     # 返回字符串类型的结果

如果要返回json字符串,可以使用如下方法:

jsonStr={'result':'hello world'}
return jsonify(jsonStr)                        # 或者json.dumps(jsonStr)

jsonStr是dict类型,然后通过jsonify方法直接将dict类型转换为json串。当然也可以使用json.dumps(jsonStr)将dict转换为json字符串。jsonify是flask自带的json处理类,返回的为flask结果,处理json串还携带了content-type="application/json"。json.dumps是单纯的转换为json串。另外json.dumps能够处理的类型比jsonify多,比如list类型。

静态文件:

静态文件(比如css等)需要存放于根目录下的static目录下。可以通过url_for方法产生静态文件的url。

比如:

url_for('static', filename='style.css')

cookies&session:

读取cookie参数:

from flask import request
@app.route('/')
def index():
    username = request.cookies.get('username')
    # use cookies.get(key) instead of cookies[key] to not get a
    # KeyError if the cookie is missing.

设置cookie参数:

from flask import make_response
@app.route('/')
def index():
    resp = make_response(render_template(...))    # Converts the return value from a view function to a real response object that is an instance of response_class.
    resp.set_cookie('username', 'the username')
    return resp

session的一个例子:

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'])    # session是dict类型
    return 'You are not logged in'
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        session['username'] = request.form['username']            # 设置session中的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)                                 # 移除session中的username变量
    return redirect(url_for('index'))
# set the secret key.  keep this really secret:
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'

密钥的获取方式:

>>> import os
>>> os.urandom(24)
时间: 2024-10-12 21:02:08

flask快速入门的相关文章

网站后端_Python+Flask.0003.FLASK快速入门之Hello Word?

框架特点: 1. 非常小, 小到可称为微型框架 2. 可扩展, 设计初衷就是不会替开发者做太多决策,支持随时更换或动手实现扩展模块 3. 三依赖, 路由/调试/WSGI(由WERKZEUG提供的WEB服务器网关接口实现),模版系统(由JINJA2实现),签名(由ITSDANGEROUS实现) 快速安装: pip install flask 快速入门: #!/usr/bin/env python # -*- coding: utf-8 -*- """ # # Authors: 

Flask快速入门(17) — flask_session

Flask快速入门(17) - flask_session 作用:将默认保存的签名cookie中的值,保存到 redis/memcached/file/Mongodb/SQLAlchemy 安装:pip install flask-session 使用1: from flask import Flask,session from flask_session import RedisSessionInterface import redis app = Flask(__name__) conn=r

Flask快速入门(18) — 信号

Flask快速入门(18) - 信号 作用:Flask框架中的信号基于blinker,其主要就是让开发者可以在flask请求过程中定制一些用户行为 安装:pip install blinker 内置信号: request_started = _signals.signal('request-started') # 请求到来前执行 request_finished = _signals.signal('request-finished') # 请求结束后执行 before_render_templ

Flask快速入门(20) — 多app应用

Flask快速入门(20) - 多app应用 之前一直是一个app,如果有多个app该怎么进行分发呢? from werkzeug.wsgi import DispatcherMiddleware from werkzeug.serving import run_simple from flask import Flask,current_app # 注册两个app app1 = Flask('app01') app2 = Flask('app02') @app1.route('/index')

【转】Flask快速入门

迫不及待要开始了吗?本页提供了一个很好的 Flask 介绍,并假定你已经安装好了 Flask.如果没有,请跳转到 安装 章节. 一个最小的应用 一个最小的 Flask 应用看起来会是这样: from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run() 把它保存为 hello.py 

Flask快速入门,知识整理

一.Flask介绍(轻量级的框架,非常快速的就能把程序搭建起来) Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器. “微”

flask快速入门笔记三_上下文对象:Flask核心机制

首先声明:内容大部分来自huizhiwang,只是单纯记笔记. 1 请求 :WSGI WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的Web服务器和Web应用程序之间的一种简单而通用的接口. WSGI将Web服务分成两个部分:服务器和应用程序.WGSI服务器只负责与网络相关的两件事:接收浏览器的 HTTP请求.向浏览器发送HTTP应答:而对HTTP请求的具体处理

flask快速入门笔记四_模板:分离数据与视图

首先声明:内容大部分来自huizhiwang,只是单纯记笔记. 1 模板引擎 在Flask中,视图函数的返回值为响应的正文被送往前端浏览器.毫无疑问,一个实用 的视图函数需要在服务端根据请求的不同动态构造这个内容.然而手工拼接一段冗长 的HTML串是乏味而且相当容易出错. 这正是模板引擎发挥威力的地方,只需要将模板和数据送入模板引擎,我们就告 别了那些那些拼接.转义之类的琐碎之事,轻松得到一个渲染后的字符串:

二 Flask快速入门

1: 外部可访问的服务器: 如果你运行了这个服务器,你会发现它只能从你自己的计算机上访问,网络中其它任何的地方都不能访问.在调试模式下,用户可以在你的计算机上执行任意 Python 代码.因此,这个行为是默认的.如果你禁用了 debug 或信任你所在网络的用户,你可以简单修改调用 run() 的方法使你的服务器公开可用,如下: app.run(host='0.0.0.0'),这会让操作系统监听所有公网 IP. 2: 调试模式 虽然 run() 方法适用于启动本地的开发服务器,但是你每次修改代码后