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

目录
  • 基础知识
    • 使用框架的优点:
    • Flask常用扩展包:
      • 基本格式:
      • 拓展:
      • return
      • 重定向
      • 取网址参数
      • content-type
      • cookie\session
      • flask路由
      • request属性
      • 上下文
      • 注册路由

基础知识

使用框架的优点:

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

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框架使用的资料请关注我们其它相关文章!

(0)

相关推荐

  • 以Flask为例讲解Python的框架的使用方法

    了解了WSGI框架,我们发现:其实一个Web App,就是写一个WSGI的处理函数,针对每个HTTP请求进行响应. 但是如何处理HTTP请求不是问题,问题是如何处理100个不同的URL. 每一个URL可以对应GET和POST请求,当然还有PUT.DELETE等请求,但是我们通常只考虑最常见的GET和POST请求. 一个最简单的想法是从environ变量里取出HTTP请求的信息,然后逐个判断: def application(environ, start_response): method = e

  • Python编程中flask的简介与简单使用

    flask是一个纯python实现的开源microframework,使用flask可以像java的spring boot一样快速开始基于RestApi的微服务开发. 概要信息 事前准备 python和pip [root@liumiaocn ~]# python --version Python 2.7.5 [root@liumiaocn ~]# pip --version pip 10.0.1 from /usr/lib/python2.7/site-packages/pip (python

  • python flask框架快速入门

    Flask 本身相当于一个内核,比如可以用 Flask 扩展加入ORM.窗体验证工具,文件上传.身份验证等.Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL. 其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2.这两个也是 Flask 框架的核心. Flask常用扩展包: Flask-SQLalchemy:操作数据库: Flask-script:插入脚本: Flask-migrate:管理迁移数据库: Flask-Session:S

  • Python的Flask开发框架简单上手笔记

    最简单的hello world #!/usr/bin/env python # encoding: utf-8 from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'hello world' if __name__ == '__main__': app.run(debug=True) #app.run(host='127.0.0.1', port=8000) 之后,访问http://l

  • Python的Flask框架中实现简单的登录功能的教程

     回顾 在前面的系列章节中,我们创建了一个数据库并且学着用用户和邮件来填充,但是到现在我们还没能够植入到我们的程序中. 两章之前,我们已经看到怎么去创建网络表单并且留下了一个实现完全的登陆表单. 在这篇文章中,我们将基于我门所学的网络表单和数据库来构建并实现我们自己的用户登录系统.教程的最后我们小程序会实现新用户注册,登陆和退出的功能. 为了能跟上这章节,你需要前一章节最后部分,我们留下的微博程序.请确保你的程序已经正确安装和运行. 在前面的章节,我们开始配置我们将要用到的Flask扩展.为了登

  • 在Python的Flask框架中使用模版的入门教程

     概述 如果你已经阅读过上一个章节,那么你应该已经完成了充分的准备工作并且创建了一个很简单的具有如下文件结构的Web应用:   microblog     |-flask文件夹     |-<一些虚拟环境的文件>     |-app文件夹     |  |-static文件夹     |  |-templates文件夹     |  |-__init__.py文件     |  |-views.py文件     |-tmp文件夹     |-run.py文件 亲,想要运行这个程序么?那就运行这

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

    目录 基础知识 使用框架的优点: Flask常用扩展包: 基本格式: 拓展: return 重定向 取网址参数 content-type cookie\session flask路由 request属性 上下文 注册路由 基础知识 使用框架的优点: 稳定性和可扩展性强 可以降低开发难度,提高了开发效率 Flask诞生于2010年,是Armin ronacher用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架 Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件

  • python中Flask框架简单入门实例

    本文实例讲述了python中Flask框架的简单用法.分享给大家供大家参考.具体如下: 使用Flask框架的简单入门范例代码,如果你正学习Flask框架,可以参考下面的启动代码,这段代码可以在网页上输出"hello world" import os # Using Flask since Python doesn't have built-in session management from flask import Flask, session app = Flask(__name_

  • Python基于Flask框架配置依赖包信息的项目迁移部署

    一般在本机上完成基于Flask框架的代码编写后,如果有接口或者数据操作方面需求需要把代码部署到指定服务器上. 一般情况下,使用Flask框架开发者大多数都是选择Python虚拟环境来运行项目,不同的虚拟环境中配置依赖包信息不同.如果重新迁移到一个新的虚拟环境后,又重新来一个一个的配置依赖包,那将会很浪费时间. 下面介绍一个简单易用的技巧,也是我自己在书本上看到的,以防每次配置需要翻阅书籍的麻烦,所以单自写一篇文章作记录,方便自己以后查看,也希望给其他学习的同学有点帮助. 完成项目相关代码编写后,

  • Python使用flask框架操作sqlite3的两种方式

    本文实例讲述了Python使用flask框架操作sqlite3的两种方式.分享给大家供大家参考,具体如下: 方式一:raw_sql import sqlite3 from flask import Flask, request, jsonify app = Flask(__name__) DATABASE_URI = ":memory:" # 创建表格.插入数据 @app.before_first_request def create_db(): # 连接 conn = sqlite3

  • python的flask框架难学吗

    Flask框架难学吗?它和Django哪个更容易一些,这可能是学Python web开发的同学经常问的问题,下面来说一下flask框架. Flask是python的web框架,最大的特征是轻便,让开发者自由灵活的兼容要开发的feature. 为什么要从Flask开始学习web框架? 1.python语言的灵活性给予了Flask同样的特征: 2.无论是用户画像还是产品推荐,python相比其他语言都有极大的优势: 3.Flask轻便,容易上手,试错成本低. 所以,从搭建一个轻便的博客出发,既要容易

  • Python编程实现的简单Web服务器示例

    本文实例讲述了Python编程实现的简单Web服务器.分享给大家供大家参考,具体如下: 最近有个需求,就是要创建一个简到要多简单就有多简单的web服务器,目的就是需要一个后台进程用来接收请求然后处理并返回结果,因此就想到了使用Python来实现. 首先创建一个myapp.py文件,其中定义了一个方法,所有的请求都会经过此方法,可以在此方法里处理传递的url和参数,并返回结果. def myapp(environ, start_response): status = '200 OK' header

  • Python编程实现的简单神经网络算法示例

    本文实例讲述了Python编程实现的简单神经网络算法.分享给大家供大家参考,具体如下: python实现二层神经网络 包括输入层和输出层 # -*- coding:utf-8 -*- #! python2 import numpy as np #sigmoid function def nonlin(x, deriv = False): if(deriv == True): return x*(1-x) return 1/(1+np.exp(-x)) #input dataset x = np.

  • python编程webpy框架模板之def with学习

    目录 一:模板的理解 二:简单模板 三:def with 四:注意 一:模板的理解 模板是将一个事物的结构规律予以固定化.标准化的成果. 例如:网页的组成需要是html,head,body,你只要按照它的规则来写,里面具体是怎么执行的,你需要去了解其他知识. web.py:页面统一通过html文件和后台的类来对应,web框架为html文件获取类中的参数提供了完整的机制. 二:简单模板 1.  在你的目录下新建文件html,在该文件夹下创建index.html文件 index.html中的内容:

  • Python中Scrapy框架的入门教程分享

    目录 前言 安装Scrapy 创建一个Scrapy项目 创建一个爬虫 运行爬虫 结论 前言 Scrapy是一个基于Python的Web爬虫框架,可以快速方便地从互联网上获取数据并进行处理.它的设计思想是基于Twisted异步网络框架,可以同时处理多个请求,并且可以使用多种处理数据的方式,如提取数据.存储数据等. 本教程将介绍如何使用Scrapy框架来编写一个简单的爬虫,从而让您了解Scrapy框架的基本使用方法. 安装Scrapy 首先,您需要在您的计算机上安装Scrapy框架.您可以使用以下命

  • python使用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,

随机推荐