Flask简单实例-2

在这里插入图片描述

# py

from flask import Flask, render_template, redirect, url_for, request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config.from_object('setting')

db = SQLAlchemy(app=app)


''' 创建表 '''
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True, comment='用户ID')
    name = db.Column(db.String(30), comment='用户名')
    num = db.Column(db.Integer, comment='关注数')


# 所有用户
@app.route('/')
def all_users():
    users = User.query.order_by(User.num.desc()).all()
    return render_template('all_users.html', users=users)


# 添加用户
@app.route('/add_user', methods=['GET','POST'])
def add_user():
    if request.method == 'POST':
        name = request.form.get('name')
        num = request.form.get('num')
        new_user = User(name=name, num=num)
        db.session.add(new_user)
        db.session.commit()
        return redirect(url_for('all_users'))
    return render_template('add_user.html')


# 修改用户
@app.route('/edit_user', methods=['GET','POST'])
def edit_user():
    user_id = request.args.get('user_id')
    one_user = User.query.get(user_id)
    if request.method == 'POST':
        name = request.form.get('name')
        one_user.name = name
        db.session.add(one_user)
        db.session.commit()
        return redirect(url_for('all_users'))
    return render_template('edit_user.html', one_user=one_user)


# 删除单个用户
@app.route('/delete_user')
def delete_user():
    user_id = request.args.get('user_id')
    one_user = User.query.get(user_id)
    db.session.delete(one_user)
    db.session.commit()
    return redirect(url_for('all_users'))


# 批量删除用户
@app.route('/delete_users', methods=['POST'])
def delete_users():
    user_ids = request.form.getlist('user_ids')
    for user_id in user_ids:
        user = User.query.get(user_id)
        db.session.delete(user)
        db.session.commit()
    return redirect(url_for('all_users'))


# 用户详情
@app.route('/user_detail')
def user_detail():
    user_id = request.args.get('user_id')
    one_user = User.query.get(user_id)
    return render_template('user_detail.html', one_user=one_user)


# 提醒登录
@app.route('/login',methods=['POST'])
def login():
    return '请先登录'


if __name__ == '__main__':
    # db.drop_all()
    # db.create_all()

    app.run()
# setting配置文件

DEBUG = True                # 开启调试模式
SECRET_KEY = "962464"       # 随机输入字符串
PER_PAGE = 10               # 设置分页每页显示数据的个数为10
# SQLALCHEMY_DATABASE_URI = 链接的数据库类型+使用的驱动://用户名:密码@数据库地址:端口/数据库名称?数据库编码
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:mysql@127.0.0.1:3306/exam2?charset=utf8' # 连接数据库
# SQLALCHEMY_ECHO = True      # 在控制面板显示
SQLALCHEMY_TRACK_MODIFICATIONS = False
{# base.html #}

{% block top %}
    <a href="{{ url_for('add_user') }}">添加用户</a>
    <a href="{{ url_for('all_users') }}">所有用户</a>
    <hr>
{% endblock top %}

{% block content %}

{% endblock content %}
{# add_user.html #}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加用户</title>
</head>
<body>
    {% extends 'base.html' %}
    {% block content %}
        <form action="" method="post">
            用户名:<input type="text" name="name" value="">
            关注数:<input type="text" name="num" value="">
            <input type="submit" value="确认添加">
        </form>
    {% endblock content %}
</body>
</html>
{# all_users.html #}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>所有用户</title>
</head>
<body>
    {% extends 'base.html' %}
    {% block content %}
    <form action="{{ url_for('delete_users') }}" method="post">
        <table border="1" cellspacing="0">
            <tr>
                <td>用户ID</td>
                <td>用户名</td>
                <td>关注数</td>
                <td>操作</td>
            </tr>
            {% for user in users %}
                <tr>
                    <td><input type="checkbox" name="user_ids" value="{{ user.id }}">{{ user.id }}</td>
                    <td>{{ user.name }}</td>
                    <td>{{ user.num }}</td>
                    <td>
                        <a href="{{ url_for('delete_user', user_id=user.id) }}">删除</a>
                        <a href="{{ url_for('edit_user', user_id=user.id) }}">修改</a>
                        <a href="{{ url_for('user_detail', user_id=user.id) }}">用户详情</a>
                    </td>
                </tr>
            {% endfor %}
        </table>
        <input type="submit" value="批量删除">
    </form>
    {% endblock content %}
</body>
</html>
{# edit_user.html #}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>修改用户</title>
</head>
<body>
    {% extends 'base.html' %}
    {% block content %}
        <form action="" method="post">
            修改用户:<input type="text" name="name" placeholder="{{ one_user.name }}">
            <input type="submit" value="确认修改">
        </form>
    {% endblock content %}
</body>
</html>
{# user_detail #}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户详情</title>
</head>
<body>
    {% extends 'base.html' %}
    {% block content %}
            <h1>用户详情页</h1>
            ID:{{ one_user.id }}<br>
            用户名:{{ one_user.name }}<br>
            关注数:{{ one_user.num }}<br>
        <form action="{{ url_for('login') }}" method="post">
            <input type="submit" value="关注">
        </form>
    {% endblock content %}
</body>
</html>

版权声明:本文为weixin_44930101原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。