20180914:网站整体结构流程

根目录\manager.py:主程序文件。

文件负责导入Flask实例,运行它。这样就有了一个可以供程序使用的网页了。 http://127.0.0.1:5000/

# 下面这句实际是从app包中的__ini__.py 导入app_flask这个flask的实例。
from app import app_flask  #
if __name__ == "__main__":
    app_flask.run()

根目录\app包__init__.py:app包初始文件。

该文件被主程序manager.py 调用,里面实例化的app 在主程序中实际运行(app.run),文件主要负责:
1、app_flask,实例化Flask。
2、导入home包 和 admin 包下ini.py中的的蓝图实例 home_blue 和 admin_bule。
3、app 注册这两个 蓝图包。后面只要用home_blue,程序就知道是前台,用admin_blue,就是后台,会自动在地址前加上/admin/前缀以示区分,而无需代码中指明admin

from flask import Flask

app_flask = Flask(__name__)   # 实例化Flask
app_flask.debug = True

# 划重点!!如何导入 __init__.py 中定义的对象? 不是 from __init__ import xxx,
# 而是要 from init_dir import xxx(init_dir 指代该 __init__.py 所在的包!)
# 从上面说的可知,下面的app.home实际指的就是 app.home 包下的__ini__.py。

from app.home import home_blue  # 导入蓝图。(实际就是导入app_flask.home 目录下_ini_.py 中的 home_blue)
from app.admin import admin_blue

app_flask.register_blueprint(home_blue)   # 注册蓝图
app_flask.register_blueprint(admin_blue, url_prefix="/admin")

根目录\app包\home包__init__.py:home包初始文件。

该文件被 app包 初始化文件_ini_.py 调用,文件主要负责:
1、实例化这个包的蓝图为home_blue。然后被上面app包ini.py文件导入后,由app_flask实例来注册。
2、导入本包下的view.py视图文件。这个文件负责转发路由地址(具体见下面view视图文件说明)

from flask import Blueprint
home_blue = Blueprint("home",__name__)   #实例化一个Blueprint 类对象创建蓝图
import app.home.views  # 导入视图模块
import app.home.views2  # 导入视图模块
import app.home.views3
...

根目录\app包\home包\view.py:home包的视图文件

这个文件主要作用就是导入这个包的蓝图实例,然后通过蓝图实例来路由转发。

关于Flask之基于route装饰器的路由系统的说明如下:

# 视图模块(程序端viwe.py中的部分代码)
@home_blue.root("/XXX/")   这里XXX表示在网页上,用鼠标放到链接上,实际显示出的的地址
def YYY():   
return render_template("home/index.html")

# 静态网页模板(程序端home.html中的部分代码)
<a class="curlink" href="{{ url_for('home.ZZZ') }}">

# 网页生成最终显示给用户的网页源码(用户端home.html中部分代码)
<a class="curlink" href="/XXX/">
  • 第一点:首先必须说明,1、文件view.py可以是任意文件名。不一定就必须是view,也可以是homeview.py , abc.py 都可以。2、可以有多个这样文件,用来装载route装饰器,只要在包的初始化文件__init__.py导入他们,这样静态模板里面的url_for就知道要到这个文件里找装饰器。
  • 第二点:YYY可以和XXX不一样。
    • YYY :这个和静态网页模板中的 url_for("home.ZZZ”)中的ZZZ必须完全相同。
    • 静态模板的url_for("home.ZZZ")通过到 视图文件(如:app\home\views.py,请参考第一点中说明)中去找和自己的ZZZ完全一样的YYY模块,并将模块上面@对应的路由装饰器中的参数“XXX”写到静态文件中去。
    • 通过以上步骤,用户网页的源文件中,链接地址就是 XXX 。当用户把鼠标放到链接上,就能看到链接对应的就是XXX。
from . import home_blue # . 一个点表示当前包下的__init__.py,(从当前包下__init__.py模块中导入home_blue)
from flask import  render_template,redirect,url_for

@home_blue.route("/")
def index():
    return render_template("home/index.html")

@home_blue.route("/login/")
def login():
    return render_template("home/login.html")

@home_blue.route("/logout/")
def logout():
    return redirect(url_for('home.index'))

猜你喜欢

转载自blog.csdn.net/zyself/article/details/82701356