我正在學習瓶子和圖紙,直到藍圖部分。首先,我具有由base.html文件包括了header.html,以及用於索引的路線下面是:瓶子顯示用戶註冊,或者已經在每個模塊的每個模板中登錄
@app.route('/')
def index():
return render_template("index.html", is_auth=session[is_authenticated], username=session[username])
header.html中:
{% if is_auth %}
Welcome {{ username }}</font>,
{% else %}
<a href="{{ url_for('users.register') }}"> Register/Login</a></li>
{% endif %}
base.html文件是簡單的:
{% block header %}
{% include 'header.html' %}
{% endblock %}
{% block content %}
{% endblock %}
{% block footer %}
{% include 'footer.html' %}
{% endblock %}
一切工作正常,頭將要求註冊,如果沒有登錄,否則顯示「歡迎...」。
我的問題是,我使用的藍圖2個模塊分別是「用戶」和「書」,所以他們有2個以下子目錄:/用戶/和/書籍/。對於每個模塊,它將擴展base.html的內容塊
然而,事情是,如果我有一個配置文件,排名,註銷等路線......然後我需要發出會話[ is_authenticated]和會話[用戶名]添加到模板以正確顯示標題。我的意思是:
@mod.route('/profile/')
@requires_login
def profile():
# do something here
return render_template("users/profile.html", is_auth=session[is_authenticated], username=session[username])
@mod.route('/rank/')
@requires_login
def rank():
# do something here
return render_template("users/rank.html", is_auth=session[is_authenticated], username=session[username])
@mod.route('/register/')
def register():
# do something here
return render_template("users/register.html", form=forms, is_auth=session[is_authenticated], username=session[username])
該代碼是非常多餘的,因爲我必須一遍又一遍發送相同的東西。有沒有有效的方法或更好的方法來處理這個問題?
非常感謝你,祝你有個美好的回憶!
您使用的認證系統是什麼?您應該只需在模板中執行'{%if user.is_authenticated%}',而無需向'render_template'添加任何內容。 – Blender
我不使用任何,我只是基本上保存到數據庫的信息,並保持會話 – Kiddo
使用像[燒瓶登錄](https://flask-login.readthedocs。org/en/latest /)會更安全和簡單。 – Blender