17、Flask構(gòu)建彈幕微電影網(wǎng)站-網(wǎng)站會(huì)員管理:查看會(huì)員和刪除

百度云搜索,搜各種資料:http://www.81ad.cn

Flask 構(gòu)建微電影視頻網(wǎng)站

已上線演示地址: http://movie.tbquan.cn

會(huì)員管理

創(chuàng)建用戶頭像保存路徑

app/__init__.py中增加配置文件

app.config['USER_IMAGE'] = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'static/user/')  # 存放用戶頭像的路徑

準(zhǔn)備一些測(cè)試頭像放在static/user/中,然后添加一些數(shù)據(jù)到user表中

mysql> use movie;
Database changed
mysql> select * from user;
Empty set (0.00 sec)

mysql> insert into
user(name, pwd, email, phone, info, face, uuid)
values
('逗起我', 'pbkdf2:sha256:50000$56hTmVhd$fa3c7d54ead0495e344f', 'user@user01.com', '12800128001', '個(gè)人簡(jiǎn)介', '01.jpg', 'd4d9772d0cb84f6b911a50670f55f395'),
('繁體', 'pbkdf2:sha256:50000$56hTmVhd$fa3c7d54ead0495e344f', 'user@user02.com', '12800128002', '個(gè)人簡(jiǎn)介', '02.jpg', '1fbd3079f1fb44afa7ddd9d212798d18'),
('立體', 'pbkdf2:sha256:50000$56hTmVhd$fa3c7d54ead0495e344f', 'user@user03.com', '12800128003', '個(gè)人簡(jiǎn)介', '03.jpg', '3f7f53f88d894f2cad96e8af4662322d'),
('突然變', 'pbkdf2:sha256:50000$56hTmVhd$fa3c7d54ead0495e344f', 'user@user04.com', '12800128004', '個(gè)人簡(jiǎn)介', '04.jpg', '256974f28e7a43809da96a716957921d'),
('刮胡刀', 'pbkdf2:sha256:50000$56hTmVhd$fa3c7d54ead0495e344f', 'user@user05.com', '12800128005', '個(gè)人簡(jiǎn)介', '05.jpg', '294a495e56474c1ea13962f602aed98d'),
('開機(jī)號(hào)', 'pbkdf2:sha256:50000$56hTmVhd$fa3c7d54ead0495e344f', 'user@user06.com', '12800128006', '個(gè)人簡(jiǎn)介', '06.jpg', 'd4b67132023b4f3c903c8e3e2b8e84e6'),
('薩達(dá)', 'pbkdf2:sha256:50000$56hTmVhd$fa3c7d54ead0495e344f', 'user@user07.com', '12800128007', '個(gè)人簡(jiǎn)介', '07.jpg', '7a3956518f034920a312877899afae0e'),
('認(rèn)為他', 'pbkdf2:sha256:50000$56hTmVhd$fa3c7d54ead0495e344f', 'user@user08.com', '12800128008', '個(gè)人簡(jiǎn)介', '08.jpg', '1c5e5f7a4e564cffafd827c96e05bc2d'),
('話筒', 'pbkdf2:sha256:50000$56hTmVhd$fa3c7d54ead0495e344f', 'user@user09.com', '12800128009', '個(gè)人簡(jiǎn)介', '09.jpg', '1dd3276fdc8440ff92a537a00c13d07a'),
('機(jī)柜號(hào)', 'pbkdf2:sha256:50000$56hTmVhd$fa3c7d54ead0495e344f', 'user@user10.com', '12800128010', '個(gè)人簡(jiǎn)介', '10.jpg', 'b4fb51f547b8490188c5a889e26bbb06'),
('珀?duì)?, 'pbkdf2:sha256:50000$56hTmVhd$fa3c7d54ead0495e344f', 'user@user11.com', '12800128011', '個(gè)人簡(jiǎn)介', '11.jpg', '94150271639b4e04855c365691cf3a47'),
('條紋', 'pbkdf2:sha256:50000$56hTmVhd$fa3c7d54ead0495e344f', 'user@user12.com', '12800128012', '個(gè)人簡(jiǎn)介', '12.jpg', '137b329d6e874e93b74082b2c133fad0'),
('與虎添翼', 'pbkdf2:sha256:50000$56hTmVhd$fa3c7d54ead0495e344f', 'user@user13.com', '12800128013', '個(gè)人簡(jiǎn)介', '13.jpg', 'c116ef9e419c447fa06991237f4ece87');

Query OK, 13 rows affected (0.08 sec)
Records: 13  Duplicates: 0  Warnings: 0

mysql> select * from user\G;
*************************** 1\. row ***************************
      id: 40
    name: 逗起我
     pwd: pbkdf2:sha256:50000$56hTmVhd$fa3c7d54ead0495e344f
   email: user@user01.com
   phone: 12800128001
    info: 個(gè)人簡(jiǎn)介
    face: 01.jpg
add_time: NULL
    uuid: d4d9772d0cb84f6b911a50670f55f395
*************************** 2\. row ***************************
      id: 41
    name: 繁體
     pwd: pbkdf2:sha256:50000$56hTmVhd$fa3c7d54ead0495e344f
   email: user@user02.com
   phone: 12800128002
    info: 個(gè)人簡(jiǎn)介
    face: 02.jpg
add_time: NULL
    uuid: 1fbd3079f1fb44afa7ddd9d212798d18
*************************** 3\. row ***************************
      id: 42
    name: 立體
     pwd: pbkdf2:sha256:50000$56hTmVhd$fa3c7d54ead0495e344f
   email: user@user03.com
   phone: 12800128003
    info: 個(gè)人簡(jiǎn)介
    face: 03.jpg
add_time: NULL
    uuid: 3f7f53f88d894f2cad96e8af4662322d
*************************** 4\. row ***************************
# 。。。。

呃,忘了添加時(shí)間了

mysql> update user set add_time='2018-10-21 12:12:12';

Query OK, 13 rows affected (0.05 sec)
Rows matched: 13  Changed: 13  Warnings: 0

會(huì)員列表

修改user_list會(huì)員列表視圖

@admin.route("/user/list/<int:page>/")
@admin_login_require
def user_list(page=None):
    if page is None:
        page = 1
    page_users = User.query.paginate(page=page, per_page=10)
    return render_template('admin/user_list.html', page_users=page_users)

修改user_list.html會(huì)員列表模板

<div class="box-body table-responsive no-padding">
    {% include 'admin/alert_info.html' %}

    <table class="table table-hover">
        <tbody>
        <tr>
            <th>編號(hào)</th>
            <th>昵稱</th>
            <th>郵箱</th>
            <th>手機(jī)</th>
            <th>頭像</th>
            <th>狀態(tài)</th>
            <th>注冊(cè)時(shí)間</th>
            <th>操作事項(xiàng)</th>
        </tr>
        {% for user in page_users.items %}
            <tr>
                <td>{{ user.id }}</td>
                <td>{{ user.name }}</td>
                <td>{{ user.email }}</td>
                <td>{{ user.phone }}</td>
                <td>
                    <img src="{{ url_for('static', filename='user/'+user.face) }}" width="50px" data-src="holder.js/50x50" class="img-responsive center-block" alt="">
                </td>
                <td>正常/凍結(jié)</td>
                <td>{{ user.add_time }}</td>
                <td>
                    <a class="label label-success" href="{{ url_for('admin.user_view') }}">查看</a>
                    &nbsp;
                    <a class="label label-info">解凍</a>
                    &nbsp;
                    <a class="label label-warning">凍結(jié)</a>
                    &nbsp;
                    <a class="label label-danger">刪除</a>
                </td>
            </tr>
        {% endfor %}
        </tbody>
    </table>
</div>
<div class="box-footer clearfix">
    {% import 'admin/pagination.html' as pg %}
    {{ pg.render_pagination(page_users, 'admin.user_list') }}
</div>

BLOG_20181111_201904_70

會(huì)員詳情

修改user_view會(huì)員詳情視圖

@admin.route("/user/view/<int:user_id>/")
@admin_login_require
def user_view(user_id=None):
    user = User.query.get_or_404(user_id)
    return render_template('admin/user_view.html', user=user)

修改user_view.html會(huì)員詳情模板

修改user_list.html會(huì)員列表顯示詳情鏈接

<a class="label label-success" href="{{ url_for('admin.user_view', user_id=user.id) }}">查看</a>

修改user_view.html會(huì)員詳情

<table class="table table-hover">
    <tbody>
    <tr>
        <td class="td_bd">編號(hào):</td>
        <td>{{ user.id }}</td>
    </tr>
    <tr>
        <td class="td_bd">昵稱:</td>
        <td>{{ user.name }}</td>
    </tr>
    <tr>
        <td class="td_bd">郵箱:</td>
        <td>{{ user.email }}</td>
    </tr>
    <tr>
        <td class="td_bd">手機(jī):</td>
        <td>{{ user.phone }}</td>
    </tr>
    <tr>
        <td class="td_bd">頭像:</td>
        <td>
            <img src="{{ url_for('static', filename='user/'+user.face) }}" data-src="holder.js/100x100" class="img-responsive" alt="">
        </td>
    </tr>
    <tr>
        <td class="td_bd">注冊(cè)時(shí)間:</td>
        <td>{{ user.add_time }}</td>
    </tr>
    <tr>
        <td class="td_bd">唯一標(biāo)志符:</td>
        <td>{{ user.uuid }}</td>
    </tr>
    <tr>
        <td class="td_bd">個(gè)性簡(jiǎn)介:</td>
        <td>{{ user.info }}</td>
    </tr>
    </tbody>
</table>

BLOG_20181111_201913_66

會(huì)員刪除

增加user_delete刪除會(huì)員視圖

@admin.route("/user/delete/<int:delete_id>/")
@admin_login_require
def user_delete(delete_id=None):
    user = User.query.get_or_404(delete_id)
    # 刪除同時(shí)要從磁盤中刪除封面文件
    file_save_path = app.config['USER_IMAGE']  # 頭像上傳保存路徑
    # 如果存在將進(jìn)行刪除,不判斷,如果文件不存在刪除會(huì)報(bào)錯(cuò)
    if os.path.exists(os.path.join(file_save_path, user.face)):
        os.remove(os.path.join(file_save_path, user.face))

    # 刪除數(shù)據(jù)庫,提交修改
    db.session.delete(user)
    db.session.commit()
    # 刪除后閃現(xiàn)消息
    flash('刪除會(huì)員成功!', category='ok')
    return redirect(url_for('admin.user_list', page=1))

修改user_list.html刪除會(huì)員鏈接

<a class="label label-danger" href="{{ url_for('admin.user_delete', delete_id=user.id) }}">刪除</a>

BLOG_20181111_201935_36
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容