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 主要是打开调试模式

 

原文地址:https://www.cnblogs.com/liangliangzz/p/10081069.html