一般的**在未登入訪問某個頁面時,會跳轉到登入介面,登入完後會跳轉回原來那個頁面,方便使用者使用。
1、使用url_for()
向登入介面傳遞需要跳轉回的位址(存放在next中)
###檢視頁面
:# 判斷是否登入
if'username'
in session:
return render_template(
"view.html"
, code=code)
else
:# 如果為登入,重定向並傳遞當前頁面路徑,方便跳回
)
2、處理表單提交方式
經過以上設定後,嘗試在未登入時訪問頁面,將被重定向到/login
頁面,觀察位址列中url,後面也會帶上?next=/view/xx
的引數(xx為後台的code)。
剛開始想著是使用js獲取url的引數,但這樣顯得有點麻煩,還需要用到正規表示式。印象中表單是可以直接提交到當前位址列中的url的,將
中的action
去掉即可。
3、獲得頁面和提交表單使用同乙個url,接受表單提交時附帶的引數
為什麼要使用同乙個url呢,因為經過第二步的修改,當後端重定向獲取登入介面後,位址列的url即為表單提交的位址,所以該url需要具備同時處理get請求和登入post表單的能力。**實現如下
###登入頁面跳轉
'/login'
,methods=
['post'
,'get'])
defloginpage()
:# 如果是get請求,則返回頁面模板
if request.method ==
'get'
:return render_template(
"login.html"
)# 如果是post請求,則處理登入表單
if request.method ==
'post'
:# 獲取表單資訊
username = request.form.get(
"uname"
) password = request.form.get(
"upwd"
)# 獲取url中net引數
next
=request.args.get(
'next'
)if check_password(username, password)
=="ok"
:#登陸成功後檢查是否需要回跳if(
next):
return redirect(
next
)else
:# 如果不需要回跳則定向到主選單
return redirect(url_for(
'mainpage'))
else
:#登陸失敗
return redirect(url_for(
'loginpage'
))
學習 Antd Pro 前後端分離
最近學習reactjs 前些年用rn開發過移動端,入門還算輕鬆。現在打算使用 antd pro 實現前後端分離。要使用antd pro這個腳手架,必須熟悉 umi dva redux saga 等相關知識。基礎知識及目錄結構可以先看官方文件 官方介紹 ant design pro 是乙個企業級中後台...
前後端 13 前後端小試牛刀
餘生還長,你別慌。別回頭,別糾纏,別念舊。準備工作 對nginx檔案下的nginx.conf進行配置 將檔案拖進vscode中 找到nginx.conf檔案中 server 部分,對其進行修改。server error page 404 404.html redirect server error ...
前後端模板
vue.js angular.js 等mvvm前端框架自帶的模板輸出模組以vue.js為例,通過具有特殊字首的html 屬性來實現資料繫結,或者使用常見的花括號模板插值,或是在表單元素上使用雙向繫結,資料的變化自動對映為檢視的更新 v text msg span span v model msg 在...