flask-login外掛程式的使用
安裝:
pip install flask-login
初始化loginmanager
##############loginmanager設定##################
loginmanager=loginmanager()
loginmanager.login_view='biziness.flask_login' 業務邏輯層中的flask_login檢視函式
loginmanager.session_protection='strong'
loginmanager.login_message='pls login to access this page'
##################結束設定#####################
##############f################
@loginmanager.user_loader
def load_user(userid):
from dataaccess.usermodels import users
return users.query.get(userid)
注釋:flask使用@loginmanager.user_loader所裝飾的函式,檢查給定的引數id是否對應返回了乙個正確的使用者物件
#############################
'''init flask
:return:
'''path = os.path.abspath(os.path.curdir)
templatefolder = os.path.join(path, 'templates')
staticfilesfolder=os.path.join(path,'static')
要正常的使用flask-login,使用者模型物件需要新增一些方法以滿足flask的需要,如下所示:
使用者模型類
from flask_login._compat import unicode
from .dbinit import db
from ext.config import bcrypt
from flask_login import anonymoususermixin
class users(db.model):
__tablename__ = 'user'
id=db.column(db.integer,autoincrement=true,primary_key=true)
username=db.column(db.string(10),nullable=true)
account=db.column(db.string(100),nullable=true,unique=true)
password=db.column(db.binary(100),nullable=true)
age=db.column(db.integer,nullable=true)
job=db.column(db.string(100),nullable=true)
address=db.column(db.string(100),nullable=true)
useremail=db.column(db.string(100),nullable=true)
groupid=db.column(db.integer,db.foreignkey('group.id'))
def is_authenticated(self):
if isinstance(self,anonymoususermixin):
return false
else:
return true
def is_active(self):
return true
def is_anonymous(self):
if isinstance(self,anonymoususermixin):
return true
else:
return false
def get_id(self):
return unicode(self.id)
其中:
is_authenticated:表示user物件是否登入
is_active:表示使用者是否啟用,如:啟用狀態和未啟用狀態採用不同的處理
is_anonymous:表示訪問者是否處於未登入的匿名狀態
get_id:返回user物件的唯一識別標誌
檢視處理函式:
from werkzeug.utils import secure_filename
from . import biz_blue
from dataaccess.dbinit import db
from biziness.formclass.userinfo import users
from dataaccess.usermodels import users as u
from flask import render_template
from flask import request,session, redirect
from ext import factory
from flask_login import login_user,login_required,logout_user,current_user
import os
@biz_blue.route('/flasklogin/',methods=['get','post'])
def flask_login():
from biziness.formclass.userinfo import users as userform
from dataaccess.usermodels import users
user_form=userform()
if request.method=='get':
else:
account=user_form.account.data
password=user_form.password.data
user=none
try:
user=users.query.filter(users.account==account).one()
except:
return redirect('/flasklogin/')
if user:
login_user(user,remember=true)
return redirect('/welcome/')
@biz_blue.route('/welcome/')
@login_required
def welcomelogeduser():
user=current_user
print(user.account)
return 'welcome to our page!!!'
@biz_blue.route('/loginout/')
def logout():
logout_user()
return 'logout successful!!!'
以上**為使用flask-login外掛程式的登入**。
flask-login還提供了乙個current_user**物件來訪問當前的登入使用者,這個物件在檢視和模版中都可以使用
在檢視可以使用}來訪問當前的使用者物件,如果需要訪問物件中的屬性時,新增相應的屬性訪問即可,如} 即當前訪問的帳戶
Flask筆記 1 簡單的flask
flask專案的基本目錄結構 flask專案名 static 靜態檔案的存放目錄 templates 模板的存放目錄 專案名.py 主專案 config.py 配置檔案 例 專案名.py from flask import flask defhello world 檢視函式 return hello...
FLask學習筆記 Flask概念(一)
1.程式例項 flask類的物件,只有乙個強制指定的引數 程式主模組或包的名字。通常用如下 建立 from flask import flask2.路由和檢視函式 處理url和函式之間關係的程式稱為路由。def index return hello world 上圖中index 即為檢視函式 動態路...
Flask學習筆記
web 發展至今,特別是伺服器端,涉及到的知識 內容,非常廣泛。這對程式設計師的要求會越來越高。如果採用成熟,穩健的框架,那麼一些基礎的工作,比如,網路操作 資料庫訪問 會話管理等都可以讓框架來處理,那麼程式開發人員可以把精力放在具體的業務邏輯上面。使用web框架開發web應用程式可以降低開發難度,...