通过flask实现web页面简单的增删改查bootstrap美化版

本文介绍了如何使用Python的Flask框架构建一个具备基本增删改查功能的Web应用,并结合Bootstrap进行界面美化。通过实例展示了如何创建路由、定义模板以及处理表单数据,帮助读者理解Flask与前端交互的基本流程。
通过flask实现web页面简单的增删改查bootstrap美化版

项目目录结构
[root@node1 python]# tree -L 2
.
├── animate.css
├── fileutils.py
├── fileutils.pyc
├── flask_web01.py
├── static
│   ├── bootstrap-3.3.5
│   ├── bootstrap.min.css
│   ├── jquery-3.3.1.min.js
│   └── signin.css
├── templates
│   ├── add.html
│   ├── jquery.html
│   ├── list.html
│   ├── login.html
│   └── update.html
└── user.txt

3 directories, 13 files
[root@node1 python]# ls
animate.css  fileutils.py  fileutils.pyc  flask_web01.py  static  templates  user.txt

# 1.后台程序falsk_web01.py
启动web程序
#coding:utf-8

from flask import Flask,render_template,request,redirect
import fileutils
# 引入file_dict用户列表
fileutils.file_read()

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('login.html')

@app.route('/loginaction/', methods = ["POST","GET"])
def login():
    error_msg = ''
    
    if request.method == 'GET':
        username = request.args.get('username')
        password = request.args.get('password')
    else:
        username = request.form.get('username')
        password = request.form.get('password')

    print('username:%s,password:%s' % (username,password))

    if username and password:
        if username == "admin" and password == "admin":
            return redirect('/list')
        else:
            error_msg = "username or password is wrong"
    else:
        error_msg = 'need username and password'

    return render_template('login.html', error_msg = error_msg)

@app.route('/list/')
def userlist():
    userlist = fileutils.file_read().items()
    print('userlist:%s' % userlist)
    return render_template('list.html', userlist = userlist)

@app.route('/update/')
def update():
    username = request.args.get('username')
    password = fileutils.file_read().get(username)
    user = [username, password]
    print('update:%s' % user)
    return render_template('update.html', user = user)


@app.route('/updateaction/', methods = ['POST'])
def updateaction():
    params = request.args if request.method == 'GET' else request.form
    
    username = params.get('username')
    password = params.get('password')
    fileutils.file_dict[username] = password
    fileutils.file_write()
    return redirect('/list/')


@app.route('/add/')
def add():
    return render_template('add.html')

@app.route('/addaction/', methods = ['POST'])
def addaction():
    params = request.args if request.method == 'GET' else request.form
    username = params.get('username')
    password = params.get('password')

    if username in fileutils.file_dict:
        return redirect('/list/')
    else:
        fileutils.file_dict[username] = password
        fileutils.file_write()
        return redirect('/list/')

@app.route('/delete/')
def delete():
    username = request.args.get('username')
    fileutils.file_dict.pop(username)
    fileutils.file_write()
    return redirect('/list/')

if __name__ == "__main__":
    app.run(host = '0.0.0.0', debug = True)

# 2.工具类fileutils.py

# coding:utf-8

file_dict = {}

# file => dict
def file_read():
    
    with open('user.txt') as f:
        for line in f.read().split('\n'):
            if line:
                tmp = line.split(':')
                file_dict[tmp[0]] = tmp[1]

    return file_dict

# ditc => file
def file_write():
    file_arr = []
    for user,pwd in file_dict.items():
        file_arr.append('%s:%s' % (user, pwd))

    print(file_arr)
    with open('user.txt', 'w') as f:
        f.write('\n'.join(file_arr))

if __name__ == "__main__":
    print(file_read())
    file_write()


# 3.模板文件templates中的登陆、列表、增删改查页面

①用户登录页面login.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" type="text/css" href="/static/signin.css">
</head>
<body>
<p style="color:red">
    {{error_msg}}
</p>

<div class="container">

  <form class="form-signin" action="/loginaction/" method="post">
    <h2 class="form-signin-heading">Please sign in</h2>
    <label for="inputEmail" class="sr-only">admin_username</label>
    <input type="text" id="username" name="username" class="form-control" placeholder="admin_username" required autofocus>
    <label for="inputPassword" class="sr-only">Password</label>
    <input type="password"  name="password" id="inputPassword" class="form-control" placeholder="Password" required>
    <div class="checkbox">
    </div>
    <button class="btn btn-lg btn-primary btn-block" type="submit">登陆</button>
  </form>

</div>
</body>
</html>

②更新用户页面update.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
    <link rel="stylesheet" type="text/css" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>

    <div class="container">
        <div class="row">

            <form class="form-inline" action='/updateaction/' method="post">
                <div class="form-group">
                    <label class="sr-only">username:</label>
                    <p class="form-control-static">{{user[0]}}</p>
                    <input type="hidden" name="username" value="{{user[0]}}" />
                </div>
                
                <div class="form-group">
                    <label for="inputPassword2" class="sr-only">Password: </label>
                    <input type="text" name="password" value="{{user[1]}}" class="form-control" id="inputPassword2" placeholder="Password">
                </div>
                <button type="submit" class="btn btn-success">update</button>
            </form>

        </div>

    </div>
</body>
</html>

③添加用户页面add.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
    <link rel="stylesheet" type="text/css" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col-md-12">
            <form class="form-inline" action="/addaction/" method="post">
                <div class="form-group">
                <label for="exampleInputName2">username: </label>
                <input type="text" name="username" class="form-control" id="exampleInputName2" placeholder="username">
                </div>
                <div class="form-group">
                <label for="exampleInputEmail2">password: </label>
                <input type="password" name="password" class="form-control" id="exampleInputEmail2" placeholder="password">
                </div>
                <button type="submit" class="btn btn-default">添加用户</button>
            </form>
        </div>
    </div>
</div>
</body>
</html>

④列表页面list.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>login</title> <link rel="stylesheet" type="text/css" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"> </head> <body> <!-- 引入流式布局 --> <div class="container-fluid"> <div class="row"> <!-- 引入栅格系统占用10列(默认共12等分) --> <div class="col-md-10"> <table class="table table-bordered"> <tr class='success'> <td>user</td> <td>pwd</td> <td>action</td> </tr> {% for user in userlist %} <tr class='info'> <td>{{user[0]}}</td> <td>{{user[1]}}</td> <td> <a class="btn btn-danger btn-xs" href="/delete/?username={{user[0]}}">delete</a> <a class="btn btn-info btn-xs" href="/update/?username={{user[0]}}">update</a> <a href="/add/">add</a> </td> </tr> {% endfor %} </table> </div> </div> </div> </body> </html> 4.用户信息文件 user.txt tom:123 jack:123 user2:000 user1:pwd1

 

基于python+FlaskWeb漏洞扫描系统-信息搜集 漏洞扫描-毕业设计源码+使用文档(高分优秀项目) 该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到97分,在window10/11测试环境严格调试,下载即用,确保可以运行,部署教程齐全,也可以作为课程设计 基于python+FlaskWeb漏洞扫描系统-信息搜集 漏洞扫描-毕业设计源码+使用文档(高分优秀项目) 该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到97分,在window10/11测试环境严格调试,下载即用,确保可以运行,部署教程齐全,也可以作为课程设计 基于python+FlaskWeb漏洞扫描系统-信息搜集 漏洞扫描-毕业设计源码+使用文档(高分优秀项目) 该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到97分,在window10/11测试环境严格调试,下载即用,确保可以运行,部署教程齐全,也可以作为课程设计 基于python+FlaskWeb漏洞扫描系统-信息搜集 漏洞扫描-毕业设计源码+使用文档(高分优秀项目) 该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到97分,在window10/11测试环境严格调试,下载即用,确保可以运行,部署教程齐全,也可以作为课程设计 基于python+FlaskWeb漏洞扫描系统-信息搜集 漏洞扫描-毕业设计源码+使用文档(高分优秀项目) 该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到97分,在window10/11测试环境严格调试,下载即用,确保可以运行,部署教程齐全,也可以作为课程设计 基于python+FlaskWeb漏洞扫描系统-信息搜集 漏洞扫描-毕业设计源码+使用文档(高分优秀项目) 该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到97分,在window10/11测试环境严格调试,下载即用,确保可以运行,部署教程齐全,也可以作为课程设计
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 "ZV-1 高级功能使用手册 用户详细指南" 此文档将全面阐述 Sony ZV-1 相机的进阶功能及其操作方法,为用户呈现详尽的操作指引和配置范例。 一、使用指南与摄影技巧 * 本手册旨在协助用户迅速掌握 Sony ZV-1 相机的使用方法 * 提供摄影技巧与操作方法等实用信息 * 可在线查阅配件兼容性详情及配置范例 二、基础操作 * 通过控制轮和菜单选项将常用功能分配至按键 * 探索功能按钮(Fn)与自定义按键的应用 * 学习显示(DISP)按钮的操作方法 * 明确拍摄及浏览时图标与提示的展示方式 三、电源与存储介质 * 查询电池续航时间及可拍摄照片数量 * 注意电池使用规范及更换事项 * 掌握存储卡插入方法及注意事项 四、语言与时间设定 * 说明语言及时间配置流程 * 熟悉相机内部功能说明和拍摄模式选择 五、拍摄模式与对焦系统 * 探究拍摄模式和对焦模式的选择 * 了解自动对焦、人脸/眼部自动对焦设置及主体追踪功能 * 掌握手动对焦和直接手动对焦(DMF)操作 * 理解峰值对焦设置及拍摄模式选择 六、触控操作与视频录制 * 阐明触控功能特性及触控快门使用 * 学习触控对焦与触控追踪功能 * 掌握视频录制模式及高帧速率(HFR)设置 * 了解智能自动与场景识别程序 七、曝光调整与白平衡 * 熟悉曝光模式和白平衡配置 * 探究ISO感光度调节与变焦功能 * 学习自动HDR及动态范围优化(DRO)技术 八、图像处理与编辑功能 * 明确图像质量与文件格式选项 * 了解美肤效果与自动构图功能 * 掌握色彩空间选择与快门速度设置 * 探索降噪处理及高ISO降噪技术 九、闪光灯与人脸识...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值