flask-15 Flask实现注册密码加密和列表数据查询

本文介绍了如何在Flask-14教程基础上扩展用户中心功能,实现数据清理、密码加密、新增isdelete字段和查询。通过修改models.py、视图(view.py)和模板文件,演示了用户注册、查询及操作功能的改进。
摘要由CSDN通过智能技术生成

目录

flask-14 Flask蓝图+数据持久化

一、数据清理

删除flask-14教程创建的表

二、修改对应文件

1、修改apps/user下的models.py

2、在templates/user 下新增center.html

3、修改apps/user下的view.py

4、修改base.html

三、创建数据库表

四、运行

1、启动服务

2、注册

 3、查看结果


修改

flask-14 Flask蓝图+数据持久化

实现密码加密和数据库查询

一、数据清理

删除flask-14教程创建的表

使用第三方工具等方式即可

二、修改对应文件

1、修改apps/user下的models.py

手机号码在数据库做了唯一判断,新增了isdelete字段和修改了password长度

from datetime import datetime
 
from ext import db
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(15), nullable=False)
    password = db.Column(db.String(64), nullable=False)
    phone = db.Column(db.String(11), unique=True)
    isdelete = db.Column(db.Boolean, default=False)
    rdatetime = db.Column(db.DateTime, default=datetime.now())

    def __str__(self):
        return self.username

2、在templates/user 下新增center.html

{% extends 'base.html' %}
{% block title %}
    用户信息
{% endblock %}
{% block middle %}
    <h1>所有用户信息如下:</h1>
    {% if users %}
    <span>当前用户人数:{{ users|length }}人</span>
    <table border="1" cellspacing="0" width="70%">
        <tr>
            <th>序号</th>
            <th>用户名</th>
            <th>密码</th>
            <th>手机号</th>
            <th>注册时间</th>
            <th>操作</th>
        </tr>
    {% for user in users %}
        <tr>
        <td>{{ loop.index }}</td>
        <td>{{ user.username }}</td>
        <td>{{ user.password }}</td>
        <td>{{ user.phone }}</td>
            <td>{{ user.rdatetime }}</td>
            <td><a href="javascript:;" onclick="update('{{ user.username }}')">修改</a>
                <a href="javascript:;" onclick="del('{{ user.username }}')">删除</a></td>
        </tr>
    {% endfor %}

    </table>
    {% else %}
    <p style="color: red; font-size: 20px;">当前还没有任何用户,抓紧时间注册吧!!</p>
    {% endif %}
{% endblock %}
{% block myjs %}
    <script>
    //删除函数
        function del(username) {
           // console.log(username)
            // location 地址栏对象
            location.href = '/del?username='+username
        }
    //修改函数
    function update(username) {
        location.href = '/update?username='+username
    }
    </script>
{% endblock %}

3、修改apps/user下的view.py

这里主要实现密码加密和数据库数据查询

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/12/16 10:03
# @Author  : niubobo
# @File    : view.py
# @Software: PyCharm
from flask import Blueprint, request, render_template, redirect,url_for
import hashlib
from apps.user.models import User
from ext import db

user_bp = Blueprint('user', __name__)


@user_bp.route('/')
def user_center():
    # 查询数据库中的数据
    users = User.query.all()
    return render_template('user/center.html', users=users)


@user_bp.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        # 获取post提交得数据
        username = request.form.get('username')
        password = request.form.get('password')
        repassword = request.form.get('repassword')
        phone = request.form.get('phone')
        if password == repassword:
            # # 用户唯一
            # for user in users:
            #     if user.username == username:
            #         return render_template('user/register.html', msg='用户名已存在')
            # 与模型结合
            # 1、找到模型类并创建对象
            user = User()
            # 2、给对象赋值
            user.username = username
            user.password = hashlib.sha256(password.encode('utf-8')).hexdigest()
            user.phone = phone
            # 添加
            # 3、将user添加到session中(类似缓存)
            db.session.add(user)
            # 4、提交数据
            db.session.commit()
            return redirect(url_for('user.user_center'))
        else:
            return '两次密码不一致'
    return render_template('user/register.html')
    # return '用户注册'

4、修改base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>
        {% block title %} 父模板的title{% endblock %}
    </title>
    <style>
        #head{
            height: 50px;
            background-color: bisque;
        }

        #head ul{
            list-style: none;
            height: 50px;
        }
        #head ul li{
            float: left;
            width: 100px;
            text-align: center;
            font-size: 15px;
            line-height: 50px;
        }

        #middle{
            height: 100%;
            background-color: azure;
        }
        #foot{
            height: 50px;
            line-height: 50px;
            background-color: darkolivegreen;
        }
    </style>
    {%  block modle_style %}{%  endblock %}

</head>
<body>
<div id="head">
    <ul>
        <li><a href="{{ url_for('user.user_center') }}">首页</a></li>
        <li><a href="{{ url_for('user.register') }}">注册</a></li>
        <li><a href="">超市</a></li>
        <li><a href="">图书</a></li>
        <li><a href="">会员</a></li>

    </ul>
</div>

<div id="middle">
    {% block middle %} 中间{% endblock %}
</div>
<div id="foot">
    我是底部
</div>
{% block myjs %}{% endblock %}
</body>
</html>

三、创建数据库表

终端执行命令:

python app.py db init


python app.py db migrade


python app.py db upgrade

四、运行

1、启动服务

python app.py runserver

2、注册

 3、查看结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春天的菠菜

你的鼓励是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值