管理后台主頁
需求
- 為后台主頁提供專門的視圖函數
- 需要帶入當前管理員用戶相關信息以便在界面進行展示
代碼實現
- 在
modules/admin/views.py
文件中添加視圖函數
@admin_blu.route('/index') @user_login_data def admin_index(): user = g.user return render_template('admin/index.html', user=user.to_dict())
admin/index.html
模板內容填充
<div class="user_info"> <img src="../../static/admin/images/person.png" alt="{{ user.nick_name }}"> <p>歡迎你 <em>{{ user.nick_name }}</em></p> </div>
訪問測試
- 完善登錄視圖函數跳轉界面邏輯
@admin_blu.route('/login', methods=["GET", "POST"]) def admin_login(): ... # 跳轉到后台管理主頁 return redirect(url_for('admin.admin_index'))
- 完善如果已登錄的管理員用戶訪問登錄頁面直接跳轉到主頁邏輯
def admin_login(): if request.method == "GET": # 去 session 中取指定的值 user_id = session.get("user_id", None) is_admin = session.get("is_admin", False) # 如果用戶id存在,並且是管理員,那么直接跳轉管理后台主頁 if user_id and is_admin: return redirect(url_for('admin.admin_index')) return render_template('admin/login.html') ...
問題:在當前代碼邏輯下,如果一個普通用戶直接訪問管理后台的主頁,或者訪問后續實現的視圖函數路由,是直接可以進入的,如何解決?