初识flask模板

注意点:

初识flask模板

初识flask模板

文件结构

初识flask模板

__init__.py   配置文件

截图:

初识flask模板

代码

from flask import Flask 
from flask_sqlalchemy import SQLAlchemy
from flask_wtf.csrf import CSRFProtect as CsrfProtect

app = Flask(__name__) 

app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:////Flaskproject/SchoolProject/School/school.db"  
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True 

app.config["SECRET_KEY"] = "581927364401" 
CsrfProtect(app)  

db = SQLAlchemy(app) 

models.py  数据库模型

截图:

初识flask模板

代码:

from School import db  

class User(db.Model): 
    id = db.Column(db.Integer,primary_key=True) 
    username = db.Column(db.String(32)) 
    password = db.Column(db.String(32))
    email = db.Column(db.String(32))

    def __repr__(self):
        return self.username 

templates/register.html 前端显示静态模板

截图:

初识flask模板

初识flask模板

代码:

<h2 style="color: red">{{ error }}</h2> 
              <form class="user" method="post"> 
                <div class="form-group row">
                  <div class="col-sm-12 mb-3 mb-sm-0">
                    <input type="text" class="form-control form-control-user" id="username" placeholder="用户名" name="username">
                  </div>
                </div>
                <div class="form-group row">
                  <div class="col-sm-12 mb-3 mb-sm-0">
                    <input type="email" class="form-control form-control-user" id="email" placeholder="邮箱" name="email">
                  </div>
                </div>
                <div class="form-group row">
                  <div class="col-sm-12 mb-3 mb-sm-0">
                    <input type="password" class="form-control form-control-user" id="password" placeholder="密码" name="password">
                  </div>
                </div>
                <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"> 
                <input value="注册" type="submit" class="btn btn-primary btn-user btn-block">
              </form>

 views.py  视图文件

from School import app
from flask import render_template,request
from School.forms import StudentForm
from School.models import User,db
import hashlib

session = db.session  # 数据库实例化

@app.route("/")
def index():   # 测试函数
    return "hello world"

def set_password(password):  # 密码哈希加密的方法
    md5 = hashlib.md5()
    md5.update(password.encode())
    result = str(md5.hexdigest())
    return result

@app.route("/register",methods=["POST","GET"])
def register():  # 跳转注册页面
    error = ""
    if request.method == "POST":
        data = StudentForm(request.form)
        if data.validate():
            clean_data = data.data  #  字典
            user = User(
                username=clean_data["username"],
                email=clean_data["email"],
                password=set_password(clean_data["password"])
            )
            session.add(user)
            session.commit()
            error = "success"
        else:
                error = data.errors
    return  render_template("register.html",error = error)

forms.py 校验文件

from flask_wtf import FlaskForm as Form
import wtforms
from wtforms import validators
from School.models import User

class EmailValider():  # 校验邮箱格式
    def __init__(self,message):
        self.message = message
    def __call__(self, form, field):
        data = field.data
        user = User.query.filter_by(email = data).all() # .all 变成列表
        if not user:
            return None
        raise validators.ValidationError(self.message)


class StudentForm(Form):  # 校验整个表单
    username = wtforms.StringField("用户姓名",validators=[
        validators.length(min=6,max=8,message="用户名必须是6到8位"),
        validators.Regexp(regex=r"[0-9a-zA-Z]{6,8}",message="用户名只能是数字字母下划线")
    ])
    password = wtforms.StringField("用户密码",validators=[
        validators.length(min=6,max=8,message="密码必须是6到8位")
    ])
    email = wtforms.StringField("用户邮箱",validators=[
        EmailValider(message="该邮箱已被占用!"),
        validators.Regexp(regex=r"\[email protected]\w+\.\w+",message="邮箱格式错误!")
    ])

 manage.py 运行文件

from School.views import app
from School.models import db

db.create_all() # 执行创建


if __name__ == "__main__":
    app.run(host="10.10.65.138",port=80,debug=True) # 运行文件 主机 端口号 debug模式 

运行:

初识flask模板

初识flask模板 

初识flask模板