flask框架初识 1

------------恢复内容开始------------

1.flask的简介以及flask启动的本质

2.flask的4剑客

3.flask配置文件的4种方式

4.路由本质

5.cbv初识,路由的本质,cbv详解

一.flask的简介以及flask启动的本质

什么是flask:

Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或,Web服务,在介绍Flask之前首先来聊下它和Django的联系以及区别,django个大而全的web框架,它内置许多模块,flask是一个小而精的轻量级框架,Django功能大而全,Flask只包含基本的配置, Django的一站式解决的思路,能让开发者不用在开发之前就在选择应用的基础设施上花费大量时间。Django有模板,表单,路由,基本的数据库管理等等内建功能。与之相反,Flask只是一个内核,默认依赖于2个外部库: Jinja2 模板引擎和 WSGI工具集--Werkzeug,flask的使用特点是基本所有的工具使用都依赖于导入的形式去扩展,flask只保留了web开发的核心功能

简单来说:

1. 是web框架,他和django一样都是web框架

2.和django一样都是同步的框架

3.用的是 jinjia2模板

4.通过 werkzeug 来起的服务

wsgi的一个请求

 1 from wsgiref.simple_server import make_server
 2
 3 ‘‘‘
 4 environ:请求相关的
 5 start_response:响应相关的
 6 ‘‘‘
 7 def mya(environ, start_response):
 8     print(environ)
 9     start_response(‘200 OK‘, [(‘Content-Type‘, ‘text/html‘)])
10     if environ.get(‘PATH_INFO‘) == ‘/index‘:
11         with open(‘index.html‘,‘rb‘) as f:
12             data=f.read()
13
14     elif environ.get(‘PATH_INFO‘) == ‘/login‘:
15         with open(‘login.html‘, ‘rb‘) as f:
16             data = f.read()
17     else:
18         data=b‘<h1>Hello, web!</h1>‘
19     return [data]
20
21 if __name__ == ‘__main__‘:
22                             # 端口   传入可执行对象
23     myserver = make_server(‘‘, 8011, mya)
24     print(‘监听8011‘)
25     myserver.serve_forever()

Werkzeug是一个WSGI工具包,他可以作为一个Web框架的底层库,
因为他封装了很多Web框架的东西,例如Request,Response等等。

 1 from werkzeug.wrappers import Request, Response
 2 @Request.application
 3 def hello(request):
 4     return Response(‘Hello World!‘)
 5
 6 if __name__ == ‘__main__‘:
 7     from werkzeug.serving import run_simple
 8     ‘‘‘
 9     记住,只要用户请求过来的,就调用run_simple
10     基于wsgi,都有这三个参数 ip,端口,可执行对象
11     ‘‘‘
12     run_simple(‘localhost‘, 4000, hello)

如何起一个flask项目

# 如何启动一个flask项目
from flask import Flask
app = Flask(__name__)
# 控制器
# mvc,c    mfv,v

# 路由用一个装饰器
@app.route(‘/‘)
def index():
    return "ok"

# 把这个类启动起来
if __name__ == ‘__main__‘:
    # 本质就是run_simple(host,port,app,**options)
    #app(),对象加(),执行__call__
    app.run()

二.flask的4剑客

from flask import Flask,render_template,redirect,jsonify
app = Flask(__name__)

# 路由匹配,用装饰器的形式
@app.route(‘/‘)
def  index():
    # 1.直接返回字符串
    return ‘ok‘
    # 2.返回html
    name_dict = {‘name‘:‘jason_gdx‘}
    return render_template(‘index.html‘,name=‘fzy‘,name_dict=name_dict)
    # 3.还可以跳转页面
    return redirect(‘/login‘)
    # 返回json数据
    name_dict = [{‘name‘: ‘jason_gdx‘}]
    return jsonify(name_dict)

@app.route(‘/login‘)
def login():
    return ‘ojbk_login‘

if __name__ == ‘__main__‘:
    app.run()

三.flask配置文件的4种方式,其他的配置方式,有哪些配置项简介

.py文件

from flask import Flask
app = Flask(__name__)
# 配置文件1,但是这种方式只能配置2种
# 把debug给为True,只要你修改了代码,按ctrl+s就可以刷新
app.debug = True
app.secret_key = ‘123123‘
# 第二种,以字典对的形式
app.config[‘DEBUG‘] = True
# 第三种,以文件的形式
app.config.from_pyfile(‘settings.py‘)
# 第四种以类的方式
app.config.from_object(‘settings.DevelopmentConfig‘)

@app.route(‘/login‘)
def login():

    return ‘ojbk_login‘

if __name__ == ‘__main__‘:
    app.run()

.settings文件

DEBUG = True

class Config(object):
    DEBUG = False
    TESTING = False
    DATABASE_URI = ‘sqlite://:memory:‘

class ProductionConfig(Config):
    DATABASE_URI = ‘mysql://[email protected]/foo‘

class DevelopmentConfig(Config):
    DEBUG = True

class TestingConfig(Config):
    TESTING = True

四.fbv路由本质

# <string:nid>  string是数据类型也可以int等等
#rule --->就是路由
#enpoint,取别名,如果没有就用当前函数名
#enpoint,不能重复
#methods=["POST","GET"]
#view_func 就我们endpoint,指向的函数,也就请求该路由的时候,要响应函数
#app.add_url_rule(rule,‘取别名,反向解析’,login)
from flask import Flask,url_for
app = Flask(__name__)
# 配置文件1,但是这种方式只能配置2种
# 把debug给为True,只要你修改了代码,按ctrl+s就可以刷新
app.debug = True

# @app.route(‘/login‘,methods=[‘GET‘,‘POST‘])
# decorator 真正的控制器函数,响应函数
# 源码里面有一个def decorator(f): f就是login
def login(nid):
    print(type(nid),nid)
    return ‘ojbk_login‘
# 路由本质
app.add_url_rule("/login/<string:nid>",view_func=login,endpoint=‘login‘,methods=[‘GET‘,‘POST‘])
# self.add_url_rule(rule,endpoint,f,**options)

# <string:nid>  string是数据类型也可以int等等
#rule --->就是路由
#enpoint,取别名,如果没有就用当前函数名
#enpoint,不能重复
#methods=["POST","GET"]
#view_func 就我们endpoint,指向的函数,也就请求该路由的时候,要响应函数
#app.add_url_rule(rule,‘取别名,反向解析’,login)

@app.route(‘/‘)
def index():
    # 怎么使用别名
    real_url = url_for(‘login‘)
    return real_url

if __name__ == ‘__main__‘:
    app.run()

五.cbv初识,路由的本质,cbv详解

‘‘‘
# 这个view要传个名字,不然源码那边返回过来就是一个view
#IndexView.as_view(name=‘index‘)都views.View里面的as_view的view
#为什么要as_view(name=‘index‘),
#如果不指定,就都是view
#所以必须指定
‘‘‘
from flask import Flask,url_for,views
app = Flask(__name__)
app.debug = True

# 简单的写法
# class IndexView(views.View):
    # 如果你继承的是view,就必须用dispatch_request做分发,这是固定格式
    # 我们需要做一个限制,到底是get请求还是post请求
    # methods = ["POST","GET"]
    # def dispatch_request(self):
    #     print(‘Index‘)
    #     return ‘Index‘

# 但是我们希望把这个get和post方法做成django的形式
# 通用的写法
class IndexView(views.MethodView):
    # 没写就不会读取,get post都行,如果写了就只能访问写的那一方
    # methods = ["POST", "GET"]
    def get(self):
        print(‘Index‘)
        return ‘Index,get‘
    def post(self):
        return ‘Index,post‘
‘‘‘
# 这个view要传个名字,不然源码那边返回过来就是一个view
#IndexView.as_view(name=‘index‘)都views.View里面的as_view的view
#为什么要as_view(name=‘index‘),
#如果不指定,就都是view
#所以必须指定
‘‘‘
app.add_url_rule("/index",view_func=IndexView.as_view(name=‘index‘))

if __name__ == ‘__main__‘:
    app.run()

原文地址:https://www.cnblogs.com/zahngyu/p/11839282.html

时间: 2024-10-29 09:54:34

flask框架初识 1的相关文章

Flask框架 - 初识

什么是Flask框架 Flask是一个基于Python并且依赖于Jinja2模板引擎和Werkzeug WSGI服务的一个微型框架(Micro Framework) Flask的框架模式是MTV M:Models层,模型层,负责与数据库打交道 T:Templates层,模板层,处理用户显示的内容,如html V:Views层,视图层,处理与用户打交道的内容(请求和响应) Flask的安装 查看是否安装Flask(在python 的交互模式中) import flask 没报错:已经安装好了Fla

python常用框架之一 Flask (1) 初识Flask

---恢复内容开始--- Flask Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架. Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现. 比如可以用 Flask 扩展加入ORM.窗体验证工具,文件上传.身份验证等.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