• flask 的简单拆分升级版


    #第一步还是把app.py改成manage.py
    #create_app是需要从__init__.py里面导入,需要先创建,后期创建也没问题。最重要的是理解思想
    from
    flask_script import Manager from app import create_app app = create_app() manage = Manager(app) if __name__ == '__main__': manage.run() # 并发 :如果某个系统支持两个或者多个动作(Action)同时存在,那么这个系统就是一个并发系统 # 并行 :如果某个系统支持两个或者多个动作同时执行,那么这个系统就是一个并行系统。 # 你吃饭吃到一半,电话来了,你一直到吃完了以后才去接, # 这就说明你不支持并发也不支持并行。 # 你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。 # 你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。 # 同步 :是所有的操作都做完,才返回给用户结果。即写完数据库之后,在相应用户,用户体验不好。 # 异步 :不用等所有操作等做完,就相应用户请求。即先相应用户请求,然后慢慢去写数据库,用户体验较好。 # 异步实例: # # 为了避免短时间大量的数据库操作,就使用缓存机制,也就是消息队列。 # 先将数据放入消息队列,然后再慢慢写入数据库。 # 异步实例: # # 为了避免短时间大量的数据库操作,就使用缓存机制,也就是消息队列。 # 先将数据放入消息队列,然后再慢慢写入数据库。 # 进程 :具有一定独立功能的程序、它是系统进行资源分配和调度的一个独立单位, # 重点在系统调度和单独的单位, # 也就是说进程是可以独 立运行的一段程序。 # 线程:线程进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源。 # 在运行时,只是暂用一些计数器、寄存器和栈 。
    #创建__init__.py
    from flask import Flask from flask_session import Session from app.views import blue #创建或注册app def create_app(): app=Flask(__name__) app.register_blueprint(blueprint=blue)#加载蓝图 app.config['SESSION_TYPE']='redis'# 使用redis的时候 记得下载驱动 app.config['SECRET_KEY']='123' sess=Session() sess.init_app(app) return app

      

    #创建views.py文件
    from flask import Blueprint, request, render_template, redirect, url_for, session blue=Blueprint('first',__name__) @blue.route('/') def hello_world(): return 'Hello World!' #登录 @blue.route('/login/') def login(): temp=render_template('login.html')#渲染模板 return temp @blue.route('/dologin/',methods=['POST','GET']) def dologin(): username=request.form.get('username') resp=redirect(url_for('first.index')) # resp.set_cookie('username',username)#设置cookie的键和值 session['username']=username#设置session的键和值 return resp @blue.route('/index/') def index(): # username=request.cookies.get('username')#从存储器cookie里面提取用户名 username = session.get('username') temp=render_template('index.html',username=username) return temp @blue.route('/loginout/') def loginout(): resp = redirect(url_for('first.index')) # resp.delete_cookie('username') session.pop('username') return resp @blue.route('/getbase/') def getbase(): temp = render_template('base_main.html') return temp

     

    创建base.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>绿野仙踪</title>
    </head>
    <body>
    {% block header %}
    <h2>花开堪折直须折,莫等花开堪折直</h2>
    {% endblock %}
    {% block body %}
    
    {% endblock %}
    
    {% block footer %}
    
    {% endblock %}
    </body>
    </html>
    

      

    创建nihao.html
    <h2>人生若只如初见,但愿相看两不厌!</h2>
    

      

    创建index.html
    欢迎{{ username }}
    <a href="{{ url_for('first.loginout') }}">退出</a>
    

      

    创建login.html
    <form action="{{ url_for('first.dologin')}}" method="post">
    
        <input type="text" name="username" placeholder="请输入用户名">
        <input type="submit" name="提交">
    
    </form>
    

      

    创建base_main.html
    {% extends 'base.html' %}
    
    {% block footer %}
    {{ super() }}
        <h2> 问世间情为何物,直教人生死相许</h2>
    {% endblock %}
    
    {% include 'nihao.html' %}
    

      python manage.py runserver -d -r 后面的-d -r 主要是打开调试模式

     

  • 相关阅读:
    安装 Visual Studio 出现网络问题,无法连接
    开机时如何默认关闭小键盘
    nginx 443端口配置
    nginx启动提示 nginx: [emerg] the INET6 sockets are not supported on this platfor
    ffmpeg 常用命令
    linux下安装python3.7.2
    Win10的Hyper-V虚拟机上安装Ubuntu后显示分辨率问题
    Hyper-V安装CentOS修改分辨率
    Linux 设置简单密码
    nginx 80端口跳转到443
  • 原文地址:https://www.cnblogs.com/liangliangzz/p/10081069.html
Copyright © 2020-2023  润新知