蓝图

1、为使项目结构模块化,更加清晰,把相同模块的视图函数放在同一个蓝图中,同一个文件中

2、创建蓝图
1、新建一个py文件目录,文件名:blueprints
新建py文件(user.py等),放置相同模块的视图函数,
user.py:

from flask import Blueprint
user_bp = Blueprint('user',name)
@user_bp.route('/login',methods=['GET','POST'])
def login():
pass

   2、主app文件注册蓝图
        app.regist_blueprint(蓝图的名称)

         如: app.register_blueprint(user_bp)

注意:
要想在url上也显示出是在同一个模块中,加上一个参数:
url_prefix

如:user_bp = Blueprint('user',name,url_prefix='/user')
这样的话,user下面的登录,注册等视图函数的url就成了
127.0.0.1:5000/user/login
127.0.0.1:5000/user/regist

3、蓝图中模板文件查找

user_bp = Blueprint('user',name,url_prefix='/user',template_folder='usertemp')
template_folder模板文件存放的文件夹(自定义的),相对于当前py文件所在的目录下。没定义的话,默认原项目中的templates文件夹中寻找
顺序是:先项目中默认的template,然后再到自定的模板文件夹中寻找

4、蓝图中静态文件查找
user_bp = Blueprint('user',name,url_prefix='/user',template_folder='usertemp',static_folder='userstatic')

如果想在模板文件中引用蓝图中的静态文件,蓝图名称.static
<link rel="stylesheet" href="{{ url_for('user.static',filename='css/login_regist.css') }}">

不加蓝图名称的话,默认加载原项目中static文件中的静态文件

5、url_for反转
1、要指定蓝图的名称
user_bp = Blueprint('user',name,url_prefix='/user',template_folder='usertemp',static_folder='userstatic')

<ul class="nav navbar-nav navbar-right">
{% if user %}
<li><a href="#">{{ user.username }}</a></li>
<li><a href="{{ url_for('user.logout') }}">注销</a></li>
{% else %}
<li><a href="{{ url_for('user.login') }}">登录</a></li>
<li><a href="{{ url_for('user.regist') }}">注册</a></li>
{% endif %}
注意:即使在同一个蓝图中反转,也要指定
return redirect(url_for('user.login'))

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容