Flask12 數據庫連接、註冊模塊
阿新 • • 發佈:2017-10-07
csr lang 數據庫連接 sta 使用 valid 數據庫 通過 length
1 連接數據庫
1.1 安裝 flask-sqlalchemy
flask-sqlalchemy 會讓 sqlalchemy 使用起來更加方便
pip3 install flask-sqlalchemy
註意:如果網速比較慢可以換源(換成豆瓣的源)
1.2 導入 SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
1.3 導入密碼加密函數和密碼檢查函數
from werkzeug.security import generate_password_hash, check_password_hash
1.4 創建sqlalchemy接口
db = SQLAlchemy()
1.5 編寫實體類以及相關方法
from flask_sqlalchemy import SQLAlchemy from werkzeug.security import generate_password_hash, check_password_hash db = SQLAlchemy() class User(db.Model): __tablename__ = ‘users‘ id = db.Column(db.String(36), primary_key=True) emailView Code= db.Column(db.String(50), unique=True) name = db.Column(db.String(50), nullable=False) password = db.Column(db.String(200), nullable=False) def __init__(self, id, email, name, password): # 類似與java中的構造器 self.id = id self.email = email self.name = name self.password= password def set_password(self, password): # 對明文密碼進行加密,返回的是加密後的密碼 return generate_password_hash(password) def check_password(self, password): # 檢查密碼,傳入的是明文密碼,會將明文密碼進行加密後再進行比對 return check_password_hash(self.password, password) def change_password(self, password): # 修改密碼 self.password = self.set_password(password)
1.6 在全局配置文件中配置數據連接
DB_CONFIG = { ‘DRIVER‘: ‘pymysql‘, ‘USER‘: ‘fury‘, ‘PASSWORD‘: ‘182838‘, ‘HOST‘: ‘127.0.0.1‘, ‘PORT‘: 3306, ‘NAME‘: ‘test_login‘, ‘NAME‘: ‘test_login‘, ‘CHARSET‘: ‘utf8‘ } SQLALCHEMY_DATABASE_URI = ‘mysql+pymysql://fury:[email protected]:3306/test_login?charset=utf8‘ # SQLALCHEMY_DATABASE_URI = ‘mysql+{DRIVER}://{USER}:{PASSWORD}@{HOST}:{PORT}/{NAME}?charset={CHARSET}‘.format(**DB_CONFIG);View Code
1.7 在Flask應用中註冊sqlalchemy
db.init_app(app) # 註冊sqlalchemy
1.8 編寫數據庫初始化函數
該函數只在服務器第一次接收到請求時執行
1.9 啟動服務器,隨便訪問一個路徑
在數據庫中自動創建一個名為users的表
2 註冊模塊
2.1 編寫登陸表單
class RegistForm(FlaskForm): name = StringField( label=‘昵稱‘, validators=[ InputRequired(‘昵稱不能為空‘) ] ) email = StringField( label=‘郵箱‘, validators=[ InputRequired(‘郵箱不能為空‘), Email(‘郵箱格式錯誤‘) ] ) password = PasswordField( label=‘密碼‘, validators=[ InputRequired(‘密碼不能為空‘), Length(6, 9, ‘密碼長度是6到9‘) ] ) confirm = PasswordField( label=‘確認‘, validators=[ InputRequired(‘密碼不能為空‘), EqualTo(‘password‘, ‘兩次密碼不一致‘) ] )View Code
2.2 通過GET方式發起註冊請求
渲染請求表單
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>註冊模塊</title> </head> <body> <h4>這是註冊模塊</h4> <hr /> <div> <form action="/regist/" method="post"> <div> <input type="hidden" name="csrf_token" value="{{ gen_token() }}" /> {# <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />#} </div> <div> {{ form.name.label }}:{{ form.name() }} </div> <div> {{ form.email.label }}:{{ form.email() }} </div> <div> {{ form.password.label }}:{{ form.password() }} </div> <div> {{ form.confirm.label }}:{{ form.confirm() }} </div> <div> <button type="submit">註冊</button> </div> </form> </div> </body> </html>View Code
2.3 錄入完註冊信息後,以POST方式發起註冊請求
驗證註冊格式信息,以及註冊信息合法性
3 本博客源代碼
點擊前往
Flask12 數據庫連接、註冊模塊