Flask开发微电影网站(八)
1.后台管理之电影预告管理
1.1 定义电影预告表单
在app的admin目录的forms.py文件中,定义电影预告表单
# 预告表单
class PreviewForm(FlaskForm):
    title = StringField(
        label="预告标题",
        validators=[
            DataRequired("请输入预告标题!")
        ],
        description="预告标题",
        render_kw={
            "class": "form-control",
            "placeholder": "请输入预告标题!",
        }
    )
    logo = FileField(
        label="预告封面",
        validators=[
            DataRequired("请上传预告封面!")
        ],
        description="预告封面",
    )
    submit = SubmitField(
        "编辑",
        render_kw={
            "class": "btn btn-primary",
        }
    )
1.2 电影管理之所有电影预告列表
1.2.1 电影管理之电影预告列表视图函数
在admin目录下的views.py文件中定义电影预告列表视图函数
电影预告列表视图函数需要被登录控制装饰器和权限控制装饰器同时装饰
@admin.route('/preview/list/<int:page>', methods=["GET"])
@admin_login_req
@admin_auth
def preview_list(page=None):
    if page is None:
        page = 1
    page_data = Preview.query.order_by(Preview.addtime.desc()).paginate(page=page, per_page=10)
    return render_template("admin/preview_list.html", page_data=page_data)
1.2.2 电影管理之电影预告列表前端页面
电影预告列表页面继承admin.html页面,还需要导入admin_page.html页面以实现分页效果
{% extends 'admin/admin.html' %}
{% import "ui/admin_page.html" as pg %}
{% block content %}
    <section class="content-header">
        <h1>微电影管理系统</h1>
        <ol class="breadcrumb">
            <li><a href="#"><i class="fa fa-dashboard"></i> 预告管理</a></li>
            <li class="active">预告列表</li>
        </ol>
    </section>
    <section class="content" id="showcontent">
        <div class="row">
            <div class="col-md-12">
                <div class="box box-primary">
                    <div class="box-header">
                        <h3 class="box-title">预告列表</h3>
                        <div class="box-tools">
                            <div class="input-group input-group-sm" style="width: 150px;">
                                <input type="text" name="table_search" class="form-control pull-right"
                                       placeholder="请输入关键字...">
                                <div class="input-group-btn">
                                    <button type="submit" class="btn btn-default"><i class="fa fa-search"></i>
                                    </button>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="box-body table-responsive no-padding">
                        {% for msg in get_flashed_messages(category_filter=["ok"]) %}
                            <div class="alert alert-success alert-dismissible">
                                <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
                                <h4><i class="icon fa fa-check"></i> 操作成功</h4>
                                {{ msg }}
                            </div>
                        {% endfor %}
                        <table class="table table-hover">
                            <tbody>
                            <tr>
                                <th>编号</th>
                                <th>预告标题</th>
                                <th>预告封面</th>
                                <th>添加时间</th>
                                <th>操作事项</th>
                            </tr>
                            {% for v in page_data.items %}
                                <tr>
                                    <td>{{ v.id }}</td>
                                    <td>{{ v.title }}</td>
                                    <td>
                                        <img data-src="{{ url_for("static",filename="uploads/"+v.logo) }}"
                                             class="img-responsive center-block" alt="">
                                    </td>
                                    <td>{{ v.addtime }}</td>
                                    <td>
                                        <a href="{{ url_for('admin.preview_edit',id=v.id) }}"
                                           class="label label-success">编辑</a>
                                         
                                        <a href="{{ url_for('admin.preview_del',id=v.id) }}" class="label label-danger">删除</a>
                                    </td>
                                </tr>
                            {% endfor %}
                            </tbody>
                        </table>
                    </div>
                    <div class="box-footer clearfix">
                        {{ pg.page(page_data,"admin.preview_list") }}
                    </div>
                </div>
            </div>
        </div>
    </section>
{% endblock %}
{% block js %}
    <script>
        $(document).ready(function () {
            $("#g-4").addClass('active');
            $("#g-4-2").addClass('active');
        });
    </script>
{% endblock %}
1.3 电影管理之添加电影预告
1.3.1 电影管理之添加电影预告视图函数
在admin目录下的views.py文件中定义添加电影预告视图函数
添加电影预告视图函数需要被登录控制装饰器和权限控制装饰器同时装饰
@admin.route('/preview/add/', methods=["GET", "POST"])
@admin_login_req
@admin_auth
def preview_add():
    form = PreviewForm()
    if form.validate_on_submit():
        data = form.data
        file_logo = secure_filename(form.logo.data.filename)
        if not os.path.exists(app.config["UP_DIR"]):
            os.makedirs(app.config["UP_DIR"])
            os.chmod(app.config["UP_DIR"])
        logo = change_filename(file_logo)
        form.logo.data.save(app.config["UP_DIR"] + logo)
        preview = Preview(
            title=data.get("title"),
            logo=logo
        )
        db.session.add(preview)
        db.session.commit()
        flash("添加预告成功!", "ok")
        return redirect(url_for("admin.preview_add"))
    return render_template("admin/preview_add.html", form=form)
1.3.2 电影管理之添加电影预告前端页面
电影预告列表页面继承admin.html页面
{% extends 'admin/admin.html' %}
{% block content %}
    <section class="content-header">
        <h1>微电影管理系统</h1>
        <ol class="breadcrumb">
            <li><a href="#"><i class="fa fa-dashboard"></i> 预告管理</a></li>
            <li class="active">添加预告</li>
        </ol>
    </section>
    <section class="content" id="showcontent">
        <div class="row">
            <div class="col-md-12">
                <div class="box box-primary">
                    <div class="box-header with-border">
                        <h3 class="box-title">添加预告</h3>
                    </div>
                    <form role="form">
                        <div class="box-body">
                            {% for msg in get_flashed_messages(category_filter=["ok"]) %}
                                <div class="alert alert-success alert-dismissible">
                                    <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×
                                    </button>
                                    <h4><i class="icon fa fa-check"></i> 操作成功</h4>
                                    {{ msg }}
                                </div>
                            {% endfor %}
                            <div class="form-group">
                                <label for="input_title">{{ form.title.label }}</label>
                                {{ form.title }}
                                {% for err in form.title.errors %}
                                    <div class="col-md-12">
                                        <font style="color:red">{{ err }}</font>
                                    </div>
                                {% endfor %}
                            </div>
                            <div class="form-group">
                                <label for="input_logo">{{ form.logo.label }}</label>
                                {{ form.logo }}
                                {% for err in form.logo.errors %}
                                    <div class="col-md-12">
                                        <font style="color:red">{{ err }}</font>
                                    </div>
                                {% endfor %}
                                <img data-src="holder.js/700x320" style="margin-top:5px;" class="img-responsive"
                                     alt="">
                            </div>
                        </div>
                        <div class="box-footer">
                            {{ form.csrf_token }}
                            {{ form.submit }}
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </section>
{% endblock %}
{% block js %}
    <script src="{{ url_for('static',filename='jwplayer/jwplayer.js') }}"></script>
    <script type="text/javascript">
        jwplayer.key = "P9VTqT/X6TSP4gi/hy1wy23BivBhjdzVjMeOaQ==";
    </script>
    <script type="text/javascript">
        jwplayer("moviecontainer").setup({
            flashplayer: "url_for('static',filename='jwplayer/jwplayer.flash.swf')",
            playlist: [{
                file: "url_for('static',filename='video/htpy.mp4')",
                title: "环太平洋"
            }],
            modes: [{
                type: "html5"
            }, {
                type: "flash",
                src: "url_for('static',filename='jwplayer/jwplayer.flash.swf')"
            }, {
                type: "download"
            }],
            skin: {
                name: "vapor"
            },
            "playlist.position": "left",
            "playlist.size": 200,
            height: 250,
            width: 387,
        });
    </script>
    <script>
        $(document).ready(function () {
            $('#input_release_time').datepicker({
                autoclose: true,
                format: 'yyyy-mm-dd',
                language: 'zh-CN',
            });
        });
    </script>
    <script>
        $(document).ready(function () {
            $("#g-4").addClass('active');
            $("#g-4-1").addClass('active');
        });
    </script>
{% endblock %}
1.4 电影管理之编辑电影预告
1.4.1 电影管理之编辑电影预告视图函数
在admin目录下的views.py文件中定义编辑电影预告视图函数
编辑电影预告视图函数需要被登录控制装饰器和权限控制装饰器同时装饰
@admin.route("/preview/edit/<int:id>/", methods=['GET', 'POST'])
@admin_login_req
@admin_auth
def preview_edit(id=None):
    form = PreviewForm()
    form.logo.validators = []
    preview = Preview.query.get_or_404(int(id))
    if request.method == "GET":
        form.title.data = preview.title
    if form.validate_on_submit():
        data = form.data
        if form.logo.data.filename != "":
            file_logo = secure_filename(form.logo.data.filename)
            preview.logo = change_filename(file_logo)
            form.logo.data.save(app.config["UP_DIR"] + preview.logo)
        preview.title = data.get("title")
        db.session.add(preview)
        db.session.commit()
        flash("修改预告成功!", "ok")
        return redirect(url_for("admin.preview_edit", id=id))
    return render_template("admin/preview_edit.html", form=form, preview=preview)
1.4.2 电影管理之编辑电影预告前端页面
电影预告列表页面继承admin.html页面
{% extends "admin/admin.html" %}
{% block content %}
    <!--内容-->
    <section class="content-header">
        <h1>微电影管理系统</h1>
        <ol class="breadcrumb">
            <li><a href="#"><i class="fa fa-dashboard"></i> 预告管理</a></li>
            <li class="active">修改预告</li>
        </ol>
    </section>
    <section class="content" id="showcontent">
        <div class="row">
            <div class="col-md-12">
                <div class="box box-primary">
                    <div class="box-header with-border">
                        <h3 class="box-title">修改预告</h3>
                    </div>
                    <form role="form" method="post" enctype="multipart/form-data">
                        <div class="box-body">
                            <!--消息闪现-->
                            {% for msg in get_flashed_messages(category_filter=["ok"]) %}
                                <div class="alert alert-success alert-dismissible">
                                    <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×
                                    </button>
                                    <h4><i class="icon fa fa-check"></i> 操作成功</h4>
                                    {{ msg }}
                                </div>
                            {% endfor %}
                            <div class="form-group">
                                <label for="input_title">{{ form.title.label }}</label>
                                {{ form.title }}
                                <!--报错信息-->
                                {% for err in form.title.errors %}
                                    <div class="col-md-12">
                                        <font style="color:red">{{ err }}</font>
                                    </div>
                                {% endfor %}
                            </div>
                            <div class="form-group">
                                <label for="input_logo">{{ form.logo.label }}</label>
                                {{ form.logo }}
                                <!--报错信息-->
                                {% for err in form.logo.errors %}
                                    <div class="col-md-12">
                                        <font style="color:red">{{ err }}</font>
                                    </div>
                                {% endfor %}
                                <img src="{{ url_for('static',filename='uploads/'+preview.logo) }}"
                                     style="margin-top:5px;" class="img-responsive"
                                     alt="">
                            </div>
                        </div>
                        <div class="box-footer">
                            {{ form.submit }}
                            {{ form.csrf_token }}
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </section>
    <!--内容-->
{% endblock %}
{% block js %}
    <script>
        $(document).ready(function () {
            $("#g-4").addClass("active");
            $("#g-4-1").addClass("active");
        });
    </script>
{% endblock %}
1.5 电影管理之删除电影预告
1.5.1 电影管理之删除电影视预告图函数
在admin目录下的views.py文件中定义删除电影预告视图函数
删除电影预告视图函数需要被登录控制装饰器和权限控制装饰器同时装饰
@admin.route("/preview/del/<int:id>/", methods=['GET', 'POST'])
@admin_login_req
@admin_auth
def preview_del(id=None):
    preview = Preview.query.get_or_404(int(id))
    db.session.delete(preview)
    db.session.commit()
    flash("删除预告成功!", "ok")
    return redirect(url_for("admin.preview_list", page=1))
1.后台管理之会员管理
2.1 会员管理之所有会员列表
2.1.1 会员管理之会员列表视图函数
在admin目录下的views.py文件中定义会员列表视图函数
会员列表视图函数需要被登录控制装饰器和权限控制装饰器同时装饰
@admin.route('/user/list/<int:page>/', methods=['GET'])
@admin_login_req
@admin_auth
def user_list(page=None):
    if page is None:
        page = 1
    page_data = User.query.order_by(User.addtime.asc()).paginate(page=page, per_page=3)
    return render_template("admin/user_list.html", page_data=page_data)
2.1.2 会员管理之会员列表前端页面
电影预告列表页面继承admin.html页面,还需要导入admin_page.html页面以实现分页效果
{% extends 'admin/admin.html' %}
{% import "ui/admin_page.html" as pg %}
{% block content %}
    <section class="content-header">
        <h1>微电影管理系统</h1>
        <ol class="breadcrumb">
            <li><a href="#"><i class="fa fa-dashboard"></i> 会员管理</a></li>
            <li class="active">会员列表</li>
        </ol>
    </section>
    <section class="content" id="showcontent">
        <div class="row">
            <div class="col-md-12">
                <div class="box box-primary">
                    <div class="box-header">
                        <h3 class="box-title">会员列表</h3>
                        <div class="box-tools">
                            <div class="input-group input-group-sm" style="width: 150px;">
                                <input type="text" name="table_search" class="form-control pull-right"
                                       placeholder="请输入关键字...">
                                <div class="input-group-btn">
                                    <button type="submit" class="btn btn-default"><i class="fa fa-search"></i>
                                    </button>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="box-body table-responsive no-padding">
                        <!--消息提示-->
                        {% for msg in get_flashed_messages(category_filter=["ok"]) %}
                            <div class="alert alert-success alert-dismissible">
                                <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
                                <h4><i class="icon fa fa-check"></i> 操作成功</h4>
                                {{ msg }}
                            </div>
                        {% endfor %}
                        <table class="table table-hover">
                            <tbody>
                            <tr>
                                <th>编号</th>
                                <th>昵称</th>
                                <th>邮箱</th>
                                <th>手机</th>
                                <th>头像</th>
                                <th>注册时间</th>
                                <th>操作事项</th>
                            </tr>
                            {% for v in page_data.items %}
                                <tr>
                                    <td>{{ v.id }}</td>
                                    <td>{{ v.name }}</td>
                                    <td>{{ v.email }}</td>
                                    <td>{{ v.face }}</td>
                                    <td>
                                        <img src="{{ url_for('static',filename='uploads/users/%s'% v.face) }}"
                                             style="width:50px;" class="img-responsive center-block" alt="">
                                    </td>
                                    <td>{{ v.addtime }}</td>
                                    <td>
                                        <a class="label label-success" href="{{ url_for('admin.user_view',id=v.id) }}">查看</a>
                                         
                                        <a class="label label-danger" href="{{ url_for('admin.user_del',id=v.id) }}">删除</a>
                                    </td>
                                </tr>
                            {% endfor %}
                            </tbody>
                        </table>
                    </div>
                    <div class="box-footer clearfix">
                        {{ pg.page(page_data,'admin.user_list') }}
                    </div>
                </div>
            </div>
        </div>
    </section>
{% endblock %}
{% block js %}
    $(document).ready(function () {
    $("#g-5").addClass('active');
    $("#g-5-1").addClass('active');
    });
{% endblock %}
2.2 会员管理之查看会员
2.2.1 会员管理之查看会员视图函数
在admin目录下的views.py文件中定义查看会员详细信息视图函数
查看会员详细信息视图函数需要被登录控制装饰器和权限控制装饰器同时装饰
@admin.route('/user/view/<int:id>/', methods=['GET'])
@admin_login_req
@admin_auth
def user_view(id=None):
    user = User.query.get_or_404(int(id))
    return render_template("admin/user_view.html", user=user)
2.2.2 会员管理之查看会员前端页面
电影预告列表页面继承admin.html页面
{% extends 'admin/admin.html' %}
{% block css %}
    <style>
        .table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, .table > thead > tr > th {
            vertical-align: middle;
            text-align: left;
        }
        .td_bd {
            font-weight: bold;
        }
    </style>
{% endblock %}
{% block content %}
    <section class="content-header">
        <h1>微电影管理系统</h1>
        <ol class="breadcrumb">
            <li><a href="#"><i class="fa fa-dashboard"></i> 会员管理</a></li>
            <li class="active">查看会员</li>
        </ol>
    </section>
    <section class="content" id="showcontent">
        <div class="row">
            <div class="col-md-12">
                <div class="box box-primary">
                    <div class="box-header">
                        <h3 class="box-title">会员详情</h3>
                    </div>
                    <div class="box-body table-responsive no-padding">
                        <table class="table table-hover">
                            <tbody>
                            <tr>
                                <td class="td_bd">编号:</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">手机:</td>
                                <td>{{ user.phone }}</td>
                            </tr>
                            <tr>
                                <td class="td_bd">头像:</td>
                                <td>
                                    <img src="{{ url_for('static',filename='uploads/users/' + user.face) }}"
                                         style="width:100px;" class="img-responsive" alt="">
                                </td>
                            </tr>
                            <tr>
                                <td class="td_bd">注册时间:</td>
                                <td>
                                    {{ user.addtime }}
                                </td>
                            </tr>
                            <tr>
                                <td class="td_bd">唯一标志符:</td>
                                <td>
                                    {{ user.uuid }}
                                </td>
                            </tr>
                            <tr>
                                <td class="td_bd">个性简介:</td>
                                <td>
                                    {{ user.info }}
                                </td>
                            </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </section>
{% endblock %}
{% block js %}
    $(document).ready(function () {
    $("#g-5").addClass('active');
    $("#g-5-1").addClass('active');
    });
{% endblock %}
2.3 会员管理之删除会员
2.3.1 会员管理之删除会员视图函数
在admin目录下的views.py文件中定义删除会员视图函数
删除会员视图函数需要被登录控制装饰器和权限控制装饰器同时装饰
@admin.route("/user/del/<int:id>/", methods=['GET'])
@admin_login_req
@admin_auth
def user_del(id=None):
    user = User.query.get_or_404(int(id))
    db.session.delete(user)
    db.session.commit()
    flash("删除会员成功", "ok")
    return redirect(url_for('admin.user_list', page=1))
3.后台管理之电影评论管理
3.1 电影管理之所有电影评论列表
3.1.1 电影管理之电影评论列表视图函数
在admin目录下的views.py文件中定义电影评论列表视图函数
电影评论列表视图函数需要被登录控制装饰器和权限控制装饰器同时装饰
@admin.route('/comment/list/<int:page>/', methods=['GET'])
@admin_login_req
@admin_auth
def comment_list(page=None):
    if page is None:
        page = 1
    page_data = Comment.query.join(Movie).join(User).filter(
        Movie.id == Comment.movie_id,
        User.id == Comment.user_id
    ).order_by(Comment.addtime).paginate(page=page, per_page=10)
    return render_template("admin/comment_list.html", page_data=page_data)
3.1.2 电影管理之电影评论列表前端页面
电影预告列表页面继承admin.html页面,还需要导入admin_page.html页面以实现分页效果
{% extends 'admin/admin.html' %}
{% import "ui/admin_page.html" as pg %}
{% block content %}
    <section class="content-header">
        <h1>微电影管理系统</h1>
        <ol class="breadcrumb">
            <li><a href="#"><i class="fa fa-dashboard"></i> 评论管理</a></li>
            <li class="active">评论列表</li>
        </ol>
    </section>
    <section class="content" id="showcontent">
        <div class="row">
            <div class="col-md-12">
                <div class="box box-primary">
                    <div class="box-header with-border">
                        <h3 class="box-title">评论列表</h3>
                        <div class="box-tools">
                            <div class="input-group input-group-sm" style="width: 150px;">
                                <input type="text" name="table_search" class="form-control pull-right"
                                       placeholder="请输入关键字...">
                                <div class="input-group-btn">
                                    <button type="submit" class="btn btn-default"><i class="fa fa-search"></i>
                                    </button>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="box-body box-comments">
                    <!--消息提示-->
                    {% for msg in get_flashed_messages(category_filter=["ok"]) %}
                    <div class="alert alert-success alert-dismissible">
                        <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
                        <h4><i class="icon fa fa-check"></i> 操作成功</h4>
                        {{ msg }}
                    </div>
                    {% endfor %}
                        {% for v in page_data.items %}
                        <div class="box-comment">
                            <img class="img-circle img-sm"
                                 src="{{ url_for('static',filename='uploads/users/%s' % v.user.face) }}" alt="User Image">
                            <div class="comment-text">
                                    <span class="username">
                                        {{ v.user.name }}
                                        <span class="text-muted pull-right">
                                            <i class="fa fa-calendar" aria-hidden="true"></i>
                                             
                                            {{ v.addtime }}
                                        </span>
                                    </span>
                                关于电影<a>《{{ v.movie.title }}》</a>的评论:{{ v.content }}
                                <br><a href="{{ url_for('admin.comment_del',id=v.id) }}" class="label label-danger pull-right">删除</a>
                            </div>
                        </div>
                        {% endfor %}
                    </div>
                    <div class="box-footer clearfix">
                        {{ pg.page(page_data,"admin.comment_list") }}
                    </div>
                </div>
            </div>
        </div>
    </section>
{% endblock %}
{% block js %}
    $(document).ready(function () {
    $("#g-6").addClass('active');
    $("#g-6-1").addClass('active');
    });
{% endblock %}
3.2 电影管理之删除电影评论
3.2.1 电影管理之删除电影评论视图函数
在admin目录下的views.py文件中定义删除电影评论视图函数
删除电影评论视图函数需要被登录控制装饰器和权限控制装饰器同时装饰
@admin.route("/comment/del/<int:id>/", methods=['GET'])
@admin_login_req
@admin_auth
def comment_del(id=None):
    comment = Comment.query.get_or_404(int(id))
    db.session.delete(comment)
    db.session.commit()
    flash("删除评论成功", "ok")
    return redirect(url_for("admin.comment_list", page=1))Flask开发微电影网站(八)的更多相关文章
- Flask开发微电影网站(一)
		1.用到的Flask知识 1.使用整形,浮点型,路径型,字符串型下正则表达式路由转化器 2.使用GET与POST请求,上传文件,cookie获取与响应,404处理 3.使用模板自动转义,定义过滤器,定 ... 
- Flask开发微电影网站(三)
		页面完成后的最终布局 可以看到,页面共同的部分是顶部导航和底部导航 所以我们可以把页面顶部导航和底部导航部分单独定义一个文件home.html,然后让需要使用顶部导航和底部导航的页面都继承home.h ... 
- Flask开发微电影网站(五)
		后台管理页面是系统管理员登录后对网站进行管理的前端页面 后台登录页面,如下图所示 管理员登录后的页面,如下图所示 管理员登录后,在右上角显示的管理员信息,如下图所示 管理员登录后,在页面中间部分的左侧 ... 
- Flask开发微电影网站(七)
		1.后台管理之电影管理 1.1 定义电影表单 在app的admin目录的forms.py文件中,定义电影表单 # 电影表单 class MovieForm(FlaskForm): title = St ... 
- Flask开发微电影网站(六)
		1. 后台管理登录功能实现 1.1 后台管理页面登录表单LoginForm 在app的admin目录下创建forms.py文件,用来保存admin蓝图中需要使用到的表单 from flask_wtf ... 
- Flask开发微电影网站(二)
		1.安装数据库连接依赖包 pip install flask-sqlalchemy 2.创建movie数据库 在CentOS虚拟机,进入MaridDB数据库提示符,创建movie数据库 create ... 
- Flask开发微电影网站(十)
		1.后台管理之角色管理 1.1 角色管理之定义角色表单 在app的admin目录的forms.py文件中,定义角色表单 # 角色表单 class RoleForm(FlaskForm): name = ... 
- Flask开发微电影网站(九)
		1.后台管理之电影管理 1.1 电影管理之所有电影收藏列表 1.1.1 电影管理之电影收藏列表视图函数 在admin目录下的views.py文件中定义电影收藏列表视图函数 电影收藏列表视图函数需要被登 ... 
- Flask开发微电影网站(四)
		会员中心页面,如下图所示 用户登录后,修改密码页面,如下图所示 用户查看自己的评论页面,如下图所示 用户查看自己的登录日志页面,如下图所示 用户查看自己收藏的电影的页面,如下图所示 1. 定义用户主页 ... 
随机推荐
- C#中的虚函数及继承关系
			转载:http://blog.csdn.net/suncherrydream/article/details/8423991 若一个实例方法声明前带有virtual关键字,那么这个方法就是虚方法. 虚 ... 
- C# Note36: .NET unit testing framework
			It’s usually good practice to have automated unit tests while developing your code. Doing so helps y ... 
- 【ubuntu】修改php-fpm和nginx运行用户
			(php)项目a是用test用户运行nginx和php-fpm是www-data用户运行(python)项目b是用test用户运行 项目a通过php函数exec调用python脚本的接口造成了没有权限 ... 
- Android艺术——Bitmap高效加载和缓存代码分析(2)
			Bitmap的加载与缓存代码分析: 图片的压缩 比如有一张1024*768像素的图像要被载入内存,然而最终你要用到的图片大小其实只有128*96,那么我们会浪费很大一部分内存,这显然是没有必要的,下面 ... 
- jvm学习一:类加载过程详解
			(自学笔记,持续更新,欢迎指正) 我们都知道一个java程序运行要经过编译和执行,但是这太概括了,中间还有很多步骤,今天来说说类加载 学完类加载之后,java运行过程就可以分为 编译 > 类 ... 
- linux服务端日志中截取自己所需要的部分
			近期开发一个图片处理的业务,涉及base64字符串解析的问题,为方便与友商间接口调试,日志中保存Base64.日,想想就肝儿疼,记录下来容易,取的时候难.为准确提取,配合两条命令即可. 1.获取日志所 ... 
- B. Vova and Trophies 字符串预处理+思维+贪心
			题意:给出一个字符串 只有G和S 可以交换任意两个位置的字符一次 问 最长的G的长度是多少 思路:预处理字符串 把相同的G粘成一个G 记一下数量 字符串变为 GSSGSGGSGSSG 相邻有一个S ... 
- adb调试
			adb usb调试,adb网络调试是非常实用的工具,通过电脑连接手机达到文件传输.电脑端安装app刷机等功能材料: 材料: 1.电脑端安装号对应手机的驱动程序 2.电脑端下载好adb调试工具 3.手机 ... 
- Java基础 -- final关键字
			在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下final ... 
- 我眼里K-Means算法
			在我眼里一切都是那么简单,复杂的我也看不懂,最讨厌那些复杂的人际关系,唉,像孩子一样交流不好吗. 学习K-Means算法时,会让我想起三国志这个游戏,界面是一张中国地图,诸侯分立,各自为据.但是游戏开 ... 
