使用flask创建一个注册界面

在昨天的基础上 ,今天将flask实际应用  创建一个注册界面  先展示一下效果

这个是基于前端界面的修改,使用后台程序存储用户注册的一系列数据,没有html样式的小伙伴可以直接自己写简单的登录,我将代码奉上!!

首先 创建项目文件夹 ,里面创建 __init__.py   forms.py  view.py  models.py manage.py  几个文件,引入样式和html文件

在__init__.py  (初始化文件)中,导入所需的模块和配置

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

app = Flask(__name__)         #实例化FLASK应用(可以当做是创建一个app)

BaseDir = os.path.join(       #查询当前所在目录
    os.path.dirname(
        os.path.abspath(__file__)
    ),
    "school.db"
).split("\\", 1)[1]

db_path = "sqlite:////" + BaseDir.replace("\\", "/")   #进行目录拼接


app.config["SQLALCHEMY_DATABASE_URI"] = db_path     #进行app配置
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
app.config["SECRET_KEY"] = "123123123"

CsrfProtect(app)
db = SQLAlchemy(app)

  接下来我们将manage.py作为项目的执行文件,代码如下

from School.views import app
from School.models import db
db.create_all()
app.run()

之后再models.py文件中创建我们的数据模型,基于此来修改前端界面

from School import db


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

    def __repr__(self):
        return self.username

然后我们用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
        if not user:
            return None
        raise validators.ValidationError(self.message)


class UserForm(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="用户名必须是6-8的数字,字母,下划线"),
    ])
    email = wtforms.StringField("用户邮箱", validators=[
        validators.Regexp(regex=r"\w+@\w\.\w+", message="邮箱格式错误"),
        EmailValider(message="邮箱重复")
    ])
    password = wtforms.StringField("密码", validators=[
        validators.length(min=6, max=8, message="密码必须大于6位小于8位")
    ])

最后我们将在获取前端用户输入的数据(views.py中)

import hashlib
from flask import request
from flask import render_template

from School import app
from School.forms import UserForm
from School.models import User, db

session = db.session


def setPassword(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 = UserForm(request.form)
        if data.validate():
            clean_data = data.data
            user = User(
                username=clean_data["username"],
                password=setPassword(clean_data["password"]),
                email=clean_data["email"],
            )
            session.add(user)
            session.commit()
            error = "success"
        else:
            error = data.errors
    return render_template("register.html", error=error)

执行项目文件,取得的是前端界面,一开始的图片

用户点击注册之后将数据存到数据库

猜你喜欢

转载自blog.csdn.net/weixin_44303465/article/details/89408077