1. 程式人生 > >flask管理員登錄後臺

flask管理員登錄後臺

acc rect 導入 red -c form表單 http bubuko .org

技術分享圖片

1、在項目的app的init.py下創建db數據庫
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = ‘mysql+pymysql://用戶名:密碼@127.0.0.1:3306/數據庫名稱‘
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
app.debug = True #設置成調試模式
db = SQLAlchemy(app) #定義db數據庫
2、在models.py文件中導入db數據庫
from app import db

3、在forms.py中定義表單驗證
from flask_wtf import FlaskForm  #先安裝flask_wtf然後導入
from wtforms import StringField, PasswordField, SubmitField #導入需要字段類型
from wtforms.validators import DataRequired,ValidationError #
class LoginForm(FlaskForm):  #定義管理員登錄表單
"""管理員登錄表單"""
account = StringField(
label=‘賬號‘, #標簽
validators=[ #驗證器,不能為空
DataRequired(‘請輸入賬號‘) #描述
],
description=‘賬號‘, #
render_kw={ #附加選項,可以添加css的樣式
‘class‘: "form-control",
‘placeholder‘: "請輸入賬號!",
# ‘required‘: ‘required‘,
}
)
def validate_account(self, field):  #自定義表單驗證
account = field.data #獲取輸入的賬號
admin=Admin.query.filter_by(name=account).count() #根據賬號查詢數據庫是否存在

if admin==0:
raise ValidationError(‘賬號不存在‘) #如果沒有該用戶,使用raise拋出一個異常

3-1、表單的處理
在view.py中導入LoginForm表單
from app.admin.forms import LoginForm  #導入表單
@admin.route(‘/login/‘, methods=[‘GET‘, ‘POST‘])
def login():
login_form = LoginForm() #定義表單
if login_form.validate_on_submit(): #判斷提交的表單是否通過驗證

data = login_form.data

admin = Admin.query.filter_by(name=data[‘account‘]).first()
if not admin.check_pwd(data[‘pwd‘]):  #檢查密碼是否正確
flash(‘密碼錯誤‘) #消息的閃現
return redirect(url_for(‘admin.login‘)) #登錄錯誤,跳轉到但呢個了界面
session[‘admin‘] = data[‘account‘] #登錄成功,加入到session中
return redirect(request.args.get(‘next‘) or url_for(‘admin.index‘)) #登錄成功後的跳轉
 return render_template(‘admin/login.html‘, form=login_form)  #把表單傳給login.html頁面
3-2、在html頁面中使用form表單
<form  method="post" id="form-data">
<div class="form-group has-feedback">
{{form.account}} #使用表單賬號
<span class="glyphicon glyphicon-envelope form-control-feedback"></span>
{% for error in form.account.errors %}
<div class="col-md-12" >
<font style="color: red" >{{error}}</font>>
</div>
{% endfor %}
</div>
<div class="form-group has-feedback">
{{form.pwd}} #使用表單密碼
  {{form.csrf_token}} #使用csrf_token

{% for error in form.account.errors %}  #獲取表單錯誤信息
<div class="col-md-12" >
<font style="color: red" >{{error}}</font>>
</div>
{% endfor %}
{% for msg in get_flashed_messages() %} #閃現view中的flash錯誤信息
<p class="login-box-msg" style="color: red;">{{msg}}</p>
{% endfor %}
#http://docs.jinkan.org/docs/flask/  通過該網址可以查看flask的使用方法










flask管理員登錄後臺