Flask框架

Posted mofujin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask框架相关的知识,希望对你有一定的参考价值。

  1.安装命令: pip install flask

  2.使用

    1.自己的app

    

from flask import Flask

app = Flask(__name__)


@app.route(/)
def hello_world():
    return Hello World!


if __name__ == __main__:
    app.run()

  2.底层代码2(了解)

from wsgiref.simple_server import make_server

def mya(environ, start_response):
    print(environ)
    start_response(200 OK, [(Content-Type, text/html)])
    if environ.get(PATH_INFO) == /index:
        with open(index.html,rb) as f:
            data=f.read()

    elif environ.get(PATH_INFO) == /login:
        with open(login.html, rb) as f:
            data = f.read()
    else:
        data=b<h1>Hello, web!</h1>
    return [data]

if __name__ == __main__:
    myserver = make_server(‘‘, 8011, mya)
    print(监听8011)
    myserver.serve_forever()

  底层实现代码2

 

  3. Flask的四大剑客(jdango 的三板斧)

from flask import Flask, render_template, redirect, jsonify

# 四剑客 render_template, redirect, jsonify
app = Flask(__name__)


@app.route(/)
def task1():
    # 1.直接返回字符串
    # return ‘字符串‘

    # 2.html页面
    my_dict = {"?name":"coco"}
    # return render_template(‘index.html‘,name=‘Tom‘,n_dict=my_dict)


    # 3/页面进行跳转
    # return redirect(‘/login‘)


    # 4.返回json 格式的数据
    name_dict = [{name:"coco_nb"},{name:"Sam"}]
    return jsonify(name_dict)
    # [{"name":"coco_nb"},{"name":"Sam"}] 标准的jsonify 格式字符串


@app.route(/login)
def login():
    # return  ‘flask_login‘  # 直接天转我们的代码实现页面或功能体代码的执行
   return render_template(login.html)  #

  

  

  

 

from flask import Flask
# 生成一个Flask 类的对象  >>> 封装成用一个类
app = Flask(__name__)  # 当前文件 实列化
# 补充: 我们有Mvc>>> model view contral和Fvc
@app.route(/)
def work1():
    return OKle  # >>> 直接返回一个字符串


if __name__ == __main__:

    app.run()

    # 本质是:run_simple(host,port,app,**optons >位置参数)
    # 对象点run()的方法 执行
    # app() 对象 ,执行__call__

  4.四种配制DEBUG 的时时更新的方法(刷新服务器的作用)

from flask import Flask,render_template,redirect, jsonify
app = Flask(__name__)
# 这是第一种配制debug
# app.debug=True
# app.secret_key = ‘12312312‘

# 这是第二种
# app.config[‘Debug‘] = True

# 第三种 debug 时时刷新配置 以文件的形式
# app.config.from_pyfile(‘settings.py‘)

# 第四种配置我们的DEBUG 时时更新 改配置代码就要记得时时刷新 IO 类CTR+S 保存就会时时刷新
# 第四种一类的形式是我们推荐的一种模式

app.config.from_object(settings.DevelopmentConfig)

@app.route(/)
def task1():
    
    return redirect(/login)


@app.route(/login)
def login():
    print(2)
    return render_template("login.html")




@app.route(/register)
def register():
    return register


if __name__ == __main__:
    print(hahah)
    app.run()

  4.起别名 (反向解析)

# 起别名
from flask import Flask, url_for,render_template,redirect
app = Flask(__name__)
app.debug=True

# @app.route(‘/login‘,methods=[‘GET‘,‘POST‘], endpoint=‘dsb‘)
#
# rule >>> 路由
# endpoint >>> 起别名
# methods = [‘GET‘,POST]
# view_fun=就是我们endpoint  我们的函数名 也就是请求改路由的的时候 要响应改函数
# 反向解析


def login(nid):
    print(type(nid),nid)
    return obj_login


app.add_url_rule(/login/<string:nid>, view_func=login, endpoint=hhh, methods=[GET,POST])
"""
取别名

"""
# 第一 起别名(反向解析)



def register():
    return ko
app.add_url_rule(/register,view_func=register, endpoint=sbs)


def index():
    real_url = url_for(sbs)

    return redirect(real_url)

app.add_url_rule(/index,view_func=index,methods=[GET,POST])
if __name__ == __main__:
    app.run()
#

 

  技术图片

 

 

  5.cbv类Flask 的执行

# CBV与fbv

 

# CBV与fbv
from flask import Flask,views

app = Flask(__name__)
app.debug = True

class IndexView(views.View):
    methods = [GET,POST]
    def dispatch_request(self):
        print(123)
        return 不会走get post 
    def get(self):
        print(111)
        return 1111
    def post(self):
        print(222)
        return 2222
#IndexView.as_view(name=‘index‘)都views.View里面的as_view的view
#为什么要as_view(name=‘index‘),
#如果不指定,就都是view
#所以必须指定

app.add_url_rule(/register, view_func=IndexView.as_view(name=register))

if __name__ == __main__:
    app.run()

  继承MethodView 实现get post 请求

# CBV与fbv
from flask import Flask,views

app = Flask(__name__)
app.debug = True

class IndexView(views.MethodView):
    methods = [GET,POST]
    # def dispatch_request(self):
    #     print(‘123‘)
    #     return ‘不会走get post ‘
    def get(self):
        print(111)
        return 1111
    def post(self):
        print(222)
        return 2222
#IndexView.as_view(name=‘index‘)都views.View里面的as_view的view
#为什么要as_view(name=‘index‘),
#如果不指定,就都是view
#所以必须指定

app.add_url_rule(/register, view_func=IndexView.as_view(name=register))

if __name__ == __main__:
    app.run()

 

 

 6.实现登陆

  

以上是关于Flask框架的主要内容,如果未能解决你的问题,请参考以下文章

python后端 flask框架 计算时间差 并根据时间差条件返回flag值

python Flask - 数据库片段

flask框架配套代码

Flask框架实现注册加密功能详解Flask企业课学习

Flask框架

Flask框架之异常处理和请求钩子