Flask开发微电影网站(九)-阿里云开发者社区

开发者社区> 任平生78> 正文

Flask开发微电影网站(九)

简介: 1.后台管理之电影管理 1.1 电影管理之所有电影收藏列表 1.1.1 电影管理之电影收藏列表视图函数 在admin目录下的views.py文件中定义电影收藏列表视图函数 电影收藏列表视图函数需要被登录控制装饰器和权限控制装饰器同时装饰 @admin.
+关注继续查看

1.后台管理之电影管理

1.1 电影管理之所有电影收藏列表

1.1.1 电影管理之电影收藏列表视图函数

在admin目录下的views.py文件中定义电影收藏列表视图函数

电影收藏列表视图函数需要被登录控制装饰器权限控制装饰器同时装饰

@admin.route('/moviecol/list/<int:page>/', methods=["GET"])
@admin_login_req
@admin_auth
def moviecol_list(page=None):
    if page is None:
        page = 1
    page_data = Moviecol.query.join(Movie).join(User).filter(
        Movie.id == Moviecol.movie_id,
        User.id == Moviecol.user_id
    ).order_by(Moviecol.addtime).paginate(page=page, per_page=10)
    return render_template("admin/moviecol_list.html", page_data=page_data)

1.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>ID</th>
                                <th>电影</th>
                                <th>用户</th>
                                <th>添加时间</th>
                                <th>操作事项</th>
                            </tr>
                            {% for v in page_data.items %}
                                <tr>
                                    <td>{{ v.id }}</td>
                                    <td>{{ v.movie.title }}</td>
                                    <td>{{ v.user.name }}</td>
                                    <td>{{ v.addtime }}</td>
                                    <td>
                                        <a href="{{ url_for('admin.moviecol_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.moviecol_list") }}
                    </div>
                </div>
            </div>
        </div>
    </section>
{% endblock %}

{% block js %}
    $(document).ready(function () {
    $("#g-7").addClass('active');
    $("#g-7-1").addClass('active');
    });
{% endblock %}

1.2 电影管理之删除电影收藏

1.2.1 电影管理之删除电影收藏视图函数

在admin目录下的views.py文件中定义删除电影视图函数

删除电影视图函数需要被登录控制装饰器权限控制装饰器同时装饰

@admin.route("/moviecol/del/<int:id>/", methods=['GET'])
@admin_login_req
@admin_auth
def moviecol_del(id=None):
    moviecol = Moviecol.query.get_or_404(int(id))
    db.session.delete(moviecol)
    db.session.commit()
    flash("删除收藏成功", "ok")
    return redirect(url_for("admin.moviecol_list", page=1))

2.后台管理之日志管理

2.1 日志管理之用户操作列表

2.1.1 日志管理之用户操作日志列表视图函数

在admin目录下的views.py文件中定义用户操作日志列表视图函数

用户操作日志列表视图函数需要被登录控制装饰器权限控制装饰器同时装饰

# 用户操作日志
@admin.route('/oplog/list/<int:page>/', methods=['GET'])
@admin_login_req
@admin_auth
def oplog_list(page=None):
    if page is None:
        page = 1
    page_data = Oplog.query.join(Admin).filter(Admin.id == Oplog.admin_id).order_by(
        Oplog.addtime
    ).paginate(page=page, per_page=5)

    return render_template("admin/oplog_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">
                        <table class="table table-hover">
                            <tbody>
                            <tr>
                                <th>编号</th>
                                <th>管理员</th>
                                <th>操作时间</th>
                                <th>操作原因</th>
                                <th>操作IP</th>
                            </tr>
                            {% for v in page_data.items %}
                            <tr>
                                <td>{{ v.id }}</td>
                                <td>{{ v.admin.name }}</td>
                                <td>{{ v.addtime }}</td>
                                <td>{{ v.reason }}</td>
                                <td>{{ v.ip }}</td>
                            </tr>
                            {% endfor %}
                            </tbody>
                        </table>
                    </div>
                    <div class="box-footer clearfix">
                        {{ pg.page(page_data,'admin.oplog_list') }}
                    </div>
                </div>
            </div>
        </div>
    </section>
    <!--内容-->
{% endblock %}

{% block js %}
    $(document).ready(function () {
    $("#g-8").addClass('active');
    $("#g-8-1").addClass('active');
    });
{% endblock %}

2.2 日志管理之管理员登录日志

2.2.1 日志管理之管理员登录日志视图函数

在admin目录下的views.py文件中定义管理员登录日志视图函数

管理员登录日志视图函数需要被登录控制装饰器权限控制装饰器同时装饰

# 管理员登录日志
@admin.route('/adminloginlog/list/<int:page>/', methods=['GET'])
@admin_login_req
@admin_auth
def adminloginlog_list(page=None):
    if page is None:
        page = 1
    page_data = Adminlog.query.join(Admin).filter(Admin.id == Adminlog.admin_id).order_by(
        Adminlog.addtime
    ).paginate(page=page, per_page=5)
    print(page_data.__dict__)
    return render_template("admin/adminloginlog_list.html", page_data=page_data)

2.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">
                        <table class="table table-hover">
                            <tbody>
                            <tr>
                                <th>编号</th>
                                <th>管理员</th>
                                <th>登录时间</th>
                                <th>登录IP</th>
                            </tr>
                            {% for i in page_data.items %}
                                <tr>
                                    <td>{{ v.id }}</td>
                                    <td>{{ v.admin.name }}</td>
                                    <td>{{ v.addtime }}</td>
                                    <td>{{ v.ip }}</td>
                                </tr>
                            {% endfor %}
                            </tbody>
                        </table>
                    </div>
                    <div class="box-footer clearfix">
                        {{ pg.page(page_data,'admin.adminloginlog_list') }}
                    </div>
                </div>
            </div>
        </div>
    </section>
    <!--内容-->
{% endblock %}

{% block js %}
    $(document).ready(function () {
    $("#g-8").addClass('active');
    $("#g-8-2").addClass('active');
    });
{% endblock %}

2.3 日志管理之会员登录日志

2.3.1 日志管理之会员登录日志列表视图函数

在admin目录下的views.py文件中定义会员登录日志列表视图函数

会员登录日志列表视图函数需要被登录控制装饰器权限控制装饰器同时装饰

# 会员登录日志
@admin.route('/userloginlog/list/<int:page>/', methods=['GET'])
@admin_login_req
@admin_auth
def userloginlog_list(page=None):
    if page is None:
        page = 1
    page_data = Userlog.query.join(User).filter(User.id == Userlog.user_id).order_by(
        Userlog.id
    ).paginate(page=page, per_page=10)
    print(page_data)
    return render_template("admin/userloginlog_list.html", page_data=page_data)

2.3.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">
                        <table class="table table-hover">
                            <tbody>
                            <tr>
                                <th>编号</th>
                                <th>会员</th>
                                <th>登录时间</th>
                                <th>登录IP</th>
                            </tr>
                            {% for v in page_data.items %}
                                <tr>
                                    <td>{{ v.id }}</td>
                                    <td>{{ v.user.name }}</td>
                                    <td>{{ v.addtime }}</td>
                                    <td>{{ v.ip }}</td>
                                </tr>
                            {% endfor %}
                            </tbody>
                        </table>
                    </div>
                    <div class="box-footer clearfix">
                        {{ pg.page(page_data,'admin.userloginlog_list') }}
                    </div>
                </div>
            </div>
        </div>
    </section>
    <!--内容-->
{% endblock %}

{% block js %}
    $(document).ready(function () {
    $("#g-8").addClass('active');
    $("#g-8-3").addClass('active');
    });
{% endblock %}

3.后台管理之权限管理

3.1 定义权限表单

在app的admin目录的forms.py文件中,定义权限表单

# 权限表单
class AuthForm(FlaskForm):
    name = StringField(
        label="权限名称",
        validators=[
            DataRequired("请输入权限名称!")
        ],
        description="权限名称",
        render_kw={
            "class": "form-control",
            "placeholder": "请输入权限名称!",
        }
    )
    url = StringField(
        label="权限",
        validators=[
            DataRequired("请输入权限地址!")
        ],
        description="权限地址",
        render_kw={
            "class": "form-control",
            "placeholder": "请输入权限地址!"
        }
    )
    submit = SubmitField(
        "添加",
        render_kw={
            "class": "btn btn-primary",
        }
    )

3.2 权限管理之所有权限列表

3.2.1 权限管理之权限列表视图函数

在admin目录下的views.py文件中定义权限列表视图函数

权限列表视图函数需要被登录控制装饰器权限控制装饰器同时装饰

@admin.route('/auth/list/<int:page>/', methods=['GET'])
@admin_login_req
@admin_auth
def auth_list(page=None):
    if page is None:
        page = 1
    page_data = Auth.query.order_by(Auth.id).paginate(page=page, per_page=10)
    return render_template("admin/auth_list.html", page_data=page_data)

3.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">
                    <!--消息提示-->
                    {% 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="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">
                        <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.name }}</td>
                                    <td>{{ v.url }}</td>
                                    <td>{{ v.addtime }}</td>
                                    <td>
                                        <a href='{{ url_for("admin.auth_edit",id=v.id) }}' class="label label-success">编辑</a>
                                        &nbsp;
                                        <a href='{{ url_for("admin.auth_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.auth_list") }}
                    </div>
                </div>
            </div>
        </div>
    </section>
    <!--内容-->
{% endblock %}

{% block js %}
    $(document).ready(function () {
    $("#g-9").addClass('active');
    $("#g-9-2").addClass('active');
    });
{% endblock %}

3.3 权限管理之添加权限

3.3.1 权限管理之添加权限视图函数

在admin目录下的views.py文件中定义添加权限视图函数

添加权限视图函数需要被登录控制装饰器权限控制装饰器同时装饰

@admin.route('/auth/add/', methods=["GET", "POST"])
@admin_login_req
@admin_auth
def auth_add():
    form = AuthForm()
    if form.validate_on_submit():
        data = form.data
        auth = Auth(
            name=data.get('name'),
            url=data.get('url'),
        )
        db.session.add(auth)
        db.session.commit()
        flash("添加权限成功!", "ok")
        return redirect(url_for("admin.auth_list", page=1))
    return render_template("admin/auth_add.html", form=form)

3.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" method="post">
                        <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_name">{{ form.name.label }}</label>
                                {{ form.name }}
                                <!--报错信息-->
                                {% for err in form.name.errors %}
                                    <div class="col-md-12">
                                        <font style="color:red">{{ err }}</font>
                                    </div>
                                {% endfor %}
                            </div>
                            <div class="form-group">
                                <label for="input_url">{{ form.url.label }}</label>
                                {{ form.url }}
                                <!--报错信息-->
                                {% for err in form.url.errors %}
                                    <div class="col-md-12">
                                        <font style="color:red">{{ err }}</font>
                                    </div>
                                {% endfor %}
                            </div>
                        </div>
                        <div class="box-footer">
                            {{ form.csrf_token }}
                            {{ form.submit }}
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </section>
    <!--内容-->
{% endblock %}

{% block js %}
    $(document).ready(function () {
    $("#g-9").addClass('active');
    $("#g-9-1").addClass('active');
    });
{% endblock %}

3.4 权限管理之编辑权限

3.4.1 权限管理之编辑权限视图函数

在admin目录下的views.py文件中定义编辑权限视图函数

编辑权限视图函数需要被登录控制装饰器权限控制装饰器同时装饰

@admin.route("/auth/edit/<int:id>/", methods=['GET', 'POST'])
@admin_login_req
@admin_auth
def auth_edit(id=None):
    form = AuthForm()
    auth = Auth.query.get_or_404(id)
    if form.validate_on_submit():
        data = form.data
        auth.name = data.get("name")
        auth.url = data.get('url')
        db.session.add(auth)
        db.session.commit()
        flash("修改权限成功!", "ok")
        return redirect(url_for("admin.auth_list", page=1))
    return render_template("admin/auth_edit.html", form=form, auth=auth)

3.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">
                        <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_name">{{ form.name.label }}</label>
                                {{ form.name(value=auth.name) }}
                                <!--报错信息-->
                                {% for err in form.name.errors %}
                                    <div class="col-md-12">
                                        <font style="color:red">{{ err }}</font>
                                    </div>
                                {% endfor %}
                            </div>
                            <div class="form-group">
                                <label for="input_url">{{ form.url.label }}</label>
                                {{ form.url(value=auth.url) }}
                                <!--报错信息-->
                                {% for err in form.url.errors %}
                                    <div class="col-md-12">
                                        <font style="color:red">{{ err }}</font>
                                    </div>
                                {% endfor %}
                            </div>
                        </div>
                        <div class="box-footer">
                            {{ form.csrf_token }}
                            {{ form.submit }}
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </section>
    <!--内容-->
{% endblock %}

{% block js %}
    $(document).ready(function () {
    $("#g-9").addClass('active');
    $("#g-9-1").addClass('active');
    });
{% endblock %}

3.5 权限管理之删除权限

3.5 权限管理之删除权限视图函数

在admin目录下的views.py文件中定义删除权限视图函数

删除权限视图函数需要被登录控制装饰器和权限控制装饰器同时装饰

@admin.route("/auth/del/<int:id>/", methods=["GET"])
@admin_login_req
@admin_auth
def auth_del(id=None):
    auth = Auth.query.filter_by(id=id).first_or_404()
    db.session.delete(auth)
    db.session.commit()
    flash("删除权限成功!", "ok")
    return redirect(url_for("admin.auth_list", page=1))

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【iOS开发】Connection to assetsd was interrupted or assetsd died
在iOS开发中,通过 UIImagePickerController 获取系统相册中的照片的 URL 并不非常的直观。 StackOverFlow 上面的相关问题基本都指向了下面这个方法: 示例代码 即,import AssetsLibrary 之后,在 imagePickerController 的方法中,通过 ALAssetsLibrary 的 writeImageToSavedPhotosAlbum 方法,在闭包中获取assetURL,而值得注意的是,有不少人在这里出现了内存管理的问题(循环引用),最终导致控制台输出如下。
935 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
8949 0
HaaS物联网设备云端一体Low-Code开发框架
基于HaaS理念打造的物联网云端一体开发框架
1158 0
阿里宣布Atlas开源:安卓客户端容器化框架,大规模团队移动开发利器
手机淘宝安卓客户端容器化框架Atlas正式宣布开源,Atlas由阿里巴巴移动团队自研,以容器化思路解决大规模团队协作问题,实现并行开发、快速迭代和动态部署,适用于Android 4.x以上系统版本的大小型App开发。
4207 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
12622 0
+关注
152
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载