通过flask实现web页面简单的增删改查bootstrap美化版
通过flask实现web页面简单的增删改查bootstrap美化版
通过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
转载于:https://www.cnblogs.com/reblue520/p/8473329.html
 
                    
                     
                    
                 
                    
                 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号