django2.0+xadmin2.0d打造权限级管理后台【一】

django项目中xadmin详细使用教程 1. 导入xadmin及需要注册的模型类 import xadmin from .models import Students, Class, Subjects 2. 自定义模型管理类,继承自object基类,(admin中继承是:admin.ModelAdmin) # 自定义模型管理类 class StudentsAdmin(object): list_display = ("name", "sex", "age", "address") 3. 注册模型类 # 注册模型类 xadm 阅读详情

【需求】:不同用户登录得到不同数据,每个用户看到的数据只能是自己创建的,或者是最高管理员创建的,最高管理员可以看到所有人的数据。

【使用技术栈】:Django2.0.7【注意一定要2.0版本的】+ Xadmin-django2 + python3.6 + pycharm

 


这篇文章是我项目昨晚写下来的,里面很多坑点,到最后也没搞完,而是使用插件去掉了BUG,如果能帮到你,帮我点个赞呗。

  • 第一步,先下载创建一个虚拟环境,里面下载好Django2.0.7和xadmin2。【我用的pycharm一键创建】
  • 没有xadmin2的同学可以去我的网盘下载 下载地址  提取码: uprk

  •  第二步,修改settings配置
INSTALLED_APPS = [
    'xadmin',
    'crispy_forms',
    # 这个是xadmin默认的版本控制器
    # 'reversion',
]


# 改成中文

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

USE_TZ = False
  •  第三步,建立数据模型
  • 将用户的user关联到xadmin的用户上
from xadmin.plugins.auth import User

class MasTer(models.Model):
    name = models.CharField(max_length=20, verbose_name='店铺名', blank=True, null=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE, editable=False, null=True, verbose_name='管理员')  # 创建该数据的登录用户
    phone = models.CharField(max_length=11, unique=True, verbose_name='手机号')
    password = models.CharField(max_length=100, verbose_name='密码')
    addtime = models.DateTimeField(auto_now_add=True, verbose_name='激活时间')

    def __str__(self):
        return self.name

    class Meta:
        db_table = 'MasTer'
        verbose_name = "店铺管理员"
        verbose_name_plural = verbose_name
  • 第四步,在models文件同级下建立adminx.py文件
  • 这样就注册完成了,下面讲一下里面具体的方法

class MasTerAdmin(object):
    """设置显示字段"""
    list_display = ['id', 'name', 'user', 'phone', 'password', 'gender']

xadmin.site.register(MasTer, MasTerAdmin)
  •  list_display 设置显示的字段
  • list_filter  设置过滤的字段 外键 使用 '__'  比如 user__id 一般用于多数据过滤
  • search_fields 设置搜索的字段,搜索框使用的模糊查询,一般用于唯一值查找
  • free_query_fields 默认是Ture 指定是否能自由搜索 也就是使用url来搜索
  • data_charts 图表功能
""" 
title : 图表的显示名称 
x-field : 图表的 X 轴数据列, 一般是日期, 时间等 
y-field : 图表的 Y 轴数据列, 该项是一个 
list, 可以同时设定多个列, 这样多个列的数据会在同一个图表中显示 
order : 排序信息, 如果不写则使用数据列表的排序 
""" 
lass RecordAdmin(object): 
    data_charts = {
         "user_count": {'title': u"User Report", "x-field": "date", "y-field": ("user_count", "view_count"),
         "order": ('date',)}, "avg_count": {'title': u"Avg Report", "x-field": "date", "y-field": ('avg_count',), "order": ('date',)} 
} 
  •  show_bookmarks 默认是Ture 是否开启书签功能
  • list_bookmarks 设置默认书签
# 举个栗子 
class UserAdmin(object): 
    list_bookmarks = [
        { 
        'title': "Female", # 书签的名称, 显示在书签菜单中 
        'query': {'gender': True}, # 过滤参数, 是标准的 queryset 过滤 
        'order': ('-age'), # 排序参数 
        'cols': ('first_name', 'age', 'phones'), # 显示的列 
        'search': 'Tom' # 搜索参数, 指定搜索的内容 
        }, 
        {...} 
] 
  • list_export 数据导出 默认4种 可以自定义 list_export=('xls','xml','json')
  • refresh_times  定时刷新器 refresh_times = (3,5,...)可以多个
  • show_detail_fields 、 show_all_rel_details 使用该插件主要设置 OptionClass 的 show_detail_fields, show_all_rel_details 两个属性. show_detail_fields属性设置哪些字段要显示详细信息, show_all_rel_details 属性设置时候自动显示所有关联字段的详细信息, 该属性默认为 True. 示例如下:

 

  • list_editable  即使编辑器  list_editable=['name','money']
  • exclude 不显示的字段
  • relfield_style  带有外键的字段变成搜索格式
  • ordering  排序,以那个字段排序 -代表倒叙
  • model_icon 选择图标 model_icon = 'fa fa-user'
  • readonly_fields 自读自读 不可编辑
  • inlines 添加外键功能 实现一张表管理两张表 连动 extra 默认出现数量
class CourseResourceInline(object):
    model = Userbanka
    extra = 1


# 用户管理
class UserManageAdmin(object):

    # TODO 连表管理无返利
    inlines = [CourseResourceInline, ]  # 添加外键功能 实现一张表管理两张表 连动

  • 针对不同用户 显示不同数据
# 数据保存时,将数据关联到用户
def save_models(self):
    self.new_obj.user = self.request.user
    super().save_models()

# 重写查询方法
def queryset(self):
    qs = super(MasTerAdmin, self).queryset()
    if self.request.user.is_superuser:
        return qs
    try:
        return qs.filter(user=self.request.user)
    except AttributeError:
        return None
  •  显示外键数据
# 定义一个函数名,使用.语法显示
def name_detail(self, obj):
    return '%s' % obj.name.detail  
# 定义名字
name_detail.short_description = '商品信息'
  • 修改基础配置和全局配置还有上下文

# 修改基础样式
class UserProfileAdmin(UserAdmin):
    def get_form_layout(self):
        if self.org_obj:
            self.form_layout = (
                Main(
                    Fieldset('',
                             'username', 'password',
                             css_class='unsort no_title'
                             ),
                    Fieldset(_('Personal info'),
                             Row('first_name', 'last_name'),
                             'email'
                             ),
                    Fieldset(_('Permissions'),
                             'groups', 'user_permissions'
                             ),
                    Fieldset(_('Important dates'),
                             'last_login', 'date_joined'
                             ),
                ),
                Side(
                    Fieldset(_('Status'),
                             'is_active', 'is_staff', 'is_superuser',
                             ),
                )
            )
        return super(UserAdmin, self).get_form_layout()

# 全局设置
class BaseSetting(object):
    # 开启主题功能
    enable_themes = True
    use_bootswatch = True


# 上下文设置
class GlobalSettings(object):
    site_title = "Shop"
    site_footer = "superning"
    # menu_style = "accordion"
  • 最后想要 app变成中文 需要在apps.py中修改
from django.apps import AppConfig


class AppConfig(AppConfig):
    name = 'app'
    verbose_name = 'Shop店铺'
xadmin 可以使用的页面样式控制基本与Django原生的admin一直。

list_display         列表展示的字段

preserve_filters  默认情况下,当你对目标进行创建、编辑或删除操作后,页面会依然保持原来的过滤状态。将preserve_filters设为False后,则会返回未过滤状态。

prepopulated_fields  设置预填充字段。不接收DateTimeField、ForeignKey和ManyToManyField类型的字段。

view_on_site  这个属性可以控制是否在admin页面显示“View site”的链接。这个链接主要用于跳转到你指定的URL页面。

free_query_filter 属性: 默认为 True , 指定是否可以自由搜索. 如果开启自由搜索, 用户可以通过 url 参数来进行特定的搜索, 
search_fields        可以通过搜索框搜索的字段名称,xadmin使用的是 模糊查询,存在外键 同 list_filter 一样  注意:只能包括 字符类型,不能有 非字符类型 如:SBBH-20180515-0002
list_filter          可以进行过滤操作的列,例如:存在外键字段class ---》student__class 获取值

ordering             默认排序的字段
readonly_fields      在编辑页面的只读字段
exclude              在编辑页面隐藏的字段
list_editable        在列表页可以快速直接编辑的字段
show_detail_fileds   在列表页显示详情信息
refresh_times        指定列表页的数据定时刷新   例如:refresh_times=(3,5)
list_export          控制列表页导出数据的类型
show_bookmarks       控制是否显示书签功能
data_charts          控制显示图标的样式
model_icon           配置表的图标,可以在 awesome 上下载最新的font-awesome.css 替换,并寻找相应的icon书写
fieldsets          ,详细页面时,使用fieldsets标签对数据进行分割显示
empty_value_display = "列数据为空时,显示默认值"
#  列聚合,可用的值:"count","min","max","avg",  "sum"
aggregate_fields = {"expire": "max"}

# 显示还原按钮,删除修改的信息可以还原
reversion_enable = True

# 添加数据时候,一步一步提供数据
wizard_form_list = [
    ("基础信息", ("name", "contact", "telphone", "address")),
    ("其它信息", ("customer_id", "expire", "description")),
]

fields               表单显示内容, 不包含在内的字段不能编辑
filter_horizontal    从‘多选框’的形式改变为‘过滤器’的方式,水平排列过滤器,必须是一个 ManyToManyField类型,且不能用于 ForeignKey字段,默认地,管理工具使用下拉框 来展现外键 字段

raw_id_fields       将ForeignKey字段从‘下拉框’改变为‘文本框’显示

relfield_style      后台自定义不是下拉选择框,而是搜索框(解决了为什么用户不是下拉框的问题。。) relfield_style = 'fk-ajax'
exclude             在编辑和查看列表时指定不显示的字段
list_editable       列表显示的时候,指定的字段可以直接页面一键编辑
list_display_links   设置默认可编辑字段
list_per_page = 20   每页显示20个
actions = ('ocr_action', 'excel_action', 'auto_excel_action') 在类中自定义的函数方法
auto_excel_action.short_description='自动化导入数据文件'         函数名描述

object_list_template = "test.html"   自定义页面

data_charts          图表,该属性为dict类型,key为图表的标示名称,value为图表的具体设置属性
data_charts = {
        "user_count": {'title': u"约运动",
                       "x-field": "sport_time", 
                       "y-field": ("people_nums",),
                       },
    }

图表属性:

  title :   图表的显示名称
  x-field : 图表的 X 轴数据列, 一般是日期, 时间等
  y-field : 图表的 Y 轴数据列, 该项是一个 list, 可以同时设定多个列, 这样多个列的数据会在同一个图表中显示
  order : 排序信息, 如果不写则使用数据列表的排序

    # 导出类型
    list_export = ('xls', 'xml', 'json')   list_export设置为None来禁用数据导出功能
    #导出字段
    list_export_fields = ('start_people', 'sport', 'sport_time')

下篇讲插件版进阶修改源码以及常见的几个BUG

django2.0+xadmin2.0d打造权限级管理后台【二】

如何使用xadmin Xadmin是一个基于Django的后台管理系统框架,可以帮助开发人员快速构建出功能丰富、易于维护的后台管理系统。在浏览器中访问`http://localhost:8000/xadmin/`即可进入xadmin后台管理页面。以上是使用xadmin的基本步骤,你可以根据自己的需要进行配置和定制。'site_footer': '©2023 后台管理系统','site_title': '后台管理系统',2. 添加xadmin到Django项目。5. 访问xadmin后台管理页面。3. 创建xadmin的管理器。 阅读详情

相关推荐

Apache NIFI InvokeHTTP处理器实战:从核心配置到错误排查全解析

HTTP协议作为现代分布式系统间数据交换的基石,其核心在于通过请求-响应模型实现资源的获取与操作。在数据集成与ETL领域,Apache NIFI通过其可视化编排和强大的处理器生态,将复杂的HTTP通信封装为可配置的组件,极大地提升了数据流开发的效率和可靠性。InvokeHTTP处理器正是这一理念的集中体现,它不仅是NIFI与外部RESTful API、Web服务交互的桥梁,更内置了连接池管理、超时重试、SSL/TLS安全等工程实践所需的健壮性机制。无论是处理`unexpected status 502 ba

weixin_30387799的博客 455

Xadmin

xadmin是Django的第三方扩展,可是使Django的admin站点使用更方便。 文档:https://xadmin.readthedocs.io/en/latest/index.html 安装 通过如下命令安装xadmin的最新版 pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2 ...

weixin_30666943的博客 325

python框架Django使用xadmin管理后台数据

Django使用xadmin管理后台数据 作用:xadmin比Django内置的admin更美观、更方便。 一、导入xadmin(第三方库) 方法1、使用pip安装 pip install git+git://github.com/sshwsfc/xadmin.git 如果出现问题可参考https://blog.csdn.net/lm_is_dc/article/details/...

LDC,公众号【轻松学编程】 7634

Xadmin文档(一)

转载自:https://xadmin.readthedocs.org/en/latest/customization.html 快速开始 Xadmin For using Xadmin, Django 1.4 needs to be installed and an Admin Site has to be activated. 安装 使用 pip: pip inst

kingken212的专栏 2万+

x-admin2.0 一个免费易用的前端后台模板

简介 X-admin基于layui的轻量级前端后台管理框架,简单免费,兼容性好,面向所有层次的前后端程序。创立于2017年初,为了敏捷WEB应用开发和简化企业应用开发而诞生的。#X-admin从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发前端后台框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

SWAT模型参数太多搞不定?一篇讲清如何用SWAT-CUP筛选关键敏感参数(含结果图解读)

本文详细解析了如何使用SWAT-CUP进行参数敏感性分析,帮助水文模型初学者从上百个参数中筛选出关键敏感参数。通过实际案例和结果图解读,介绍了敏感性分析的核心价值、SWAT-CUP结果界面解读方法以及参数筛选的四步实战法,显著提升模型调试效率。文章还提供了典型问题排查手册,解决敏感参数与文献不一致、率定后模型变差等常见问题。

weixin_30385925的博客 321

django2.0+xadmin2.0d打造权限级管理后台【二】

xadmin权限级店铺系统 继承AbstractUser 控制auth表,这里面有一个问题,密码无法加密,到时候保存密码的时候调用make_password方法 from django.contrib.auth.hashers import make_password make_password(password) 做一个店铺表,然后,每一个表都关联店铺表,生成一个店铺字段,表示数据是谁创建的 ...

Python_anning的博客 1732

【重启后nvidia-smi 命令出现错误】

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

qq_44769377的博客 5212

终极Xadmin教程:10分钟打造专业级Django后台管理系统

想要为你的Django项目打造一个既美观又强大的后台管理界面吗?Xadmin正是你需要的完美解决方案!作为Django admin的直接替代品,Xadmin基于Twitter Bootstrap构建,提供丰富的插件支持和现代化的用户界面,让后台管理变得简单高效。 ## 🚀 Xadmin是什么? **Xadmin** 是一个功能强大的Django后台管理系统,它完全兼容原生Django adm

gitblog_00785的博客 488

PCB设计之ODB++文件格式详解

ODB++(Open Database++)是一种广泛应用于PCB(印制电路板)设计和制造领域的开放数据交换格式。它由Valor Computerized Systems(现为Siemens EDA的一部分)开发,旨在替代传统的Gerber文件格式,提供更完整、结构化的制造数据,从而优化PCB设计到生产的流程。ODB++通过结构化数据整合了PCB设计到制造的全流程信息,显著提高了生产效率和准确性。尽管存在一定的兼容性挑战,但其在复杂项目和高可靠性场景中的价值不可替代。

ZZcppc的博客 1万+

SpringBoot 指标监控——Actuator

1、 访问:localhost:8000/actuator 设置健康监控显示具体情况 metrics http://localhost:8000/actuator/metrics/jvm.gc.live.data.size 定制化health信息 //利用构造器,在注册中心中添加cityService.saveCity.count指标 public CityServiceImpl(MeterRegistry meter...

weixin_44302046的博客 4631

第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置...

第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置   软件版本  uwsgi-2.0.15nginx-1.12.1   1.用Navicat Premium远程登录Linux系统数据库,创建网站需要的数据库   2.数据库创建好后,将开发环境的数据库传输到刚才创建的数据库...

weixin_34343689的博客 208

利用人工神经网络在Abaqus中实现本构模型的网格粗化计算框架:详细指南与实践

在这篇文章中,我们详细介绍了如何在Abaqus中实现基于人工神经网络(ANN)的本构模型以进行网格粗化的计算框架。我们通过两个主要模块——数据生成器模块和ANN训练模块,实现了这一计算框架,并将训练好的ANN集成到Abaqus的用户材料子程序(UMAT)中,创建了一个基于ANN的本构模型。我希望这篇文章能帮助到那些希望在Abaqus中实现基于ANN的本构模型的读者,同时,我也非常欢迎大家提出宝贵的意见和建议,让我们共同进步。

qq_38334677的博客 1717

第三百九十九节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装mysql5.6...

第三百九十九节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装mysql5.6   1.检测系统是否已经安装过mysql或其依赖,若已装过要先将其删除,否则第4步使用yum安装时会报错: [root@192 ~]# yum list installed | grep mysql mysql-libs.x86_64 5.1.71-1.el6 ...

weixin_34153893的博客 119

1.5 RAG技术栈全景图:LangChain vs LlamaIndex深度对比,选错框架后悔3年,一文帮你选对

摘要:LangChain与LlamaIndex框架深度对比 本文全面对比了RAG领域两大主流框架LangChain和LlamaIndex。LangChain是通用AI应用框架,具有模块化设计和丰富生态;LlamaIndex专为RAG优化,提供开箱即用解决方案。功能对比显示,LangChain在文档加载和Agent支持方面更强,而LlamaIndex在检索策略、向量存储和多模态处理上表现更优。代码示例展示了二者实现RAG的不同方式:LangChain需要更多配置但灵活性高,LlamaIndex则提供更简洁的A

yonggeit的博客 3240

复习单片机:动态数码管(1 数码管介绍+2 74HC245 和 74HC138 芯片介绍+3 硬件设计+4 软件设计+5 实验现象)

复习单片机:动态数码管(1 数码管介绍+2 74HC245 和 74HC138 芯片介绍+3 硬件设计+4 软件设计+5 实验现象)

wo12369874的博客 1701

更强大的django后台管理系统-xadmin详解

1.xadmin会自动发现我们自定义的用户表并自动生成 class UserProfile(AbstractUser): nick_name = models.CharField(max_length=50, verbose_name="昵称", default="") birthday = models.DateField(verbose_name="生日", null=True, blank=True) gender = models.CharField(verbose_name

ch_atu的博客 5478

100天精通Python(基础篇)——第4天:数据类型全解析_从基础到转换

数据类型全解析_从基础到转换

努力让自己发光,对的人才能迎着光而来 11万+

Django Xadmin 官方文档 之四 Xadmin 插件

这个是 Django Xadmin 官方文档中的 Xadmin 插件部分。 官方网站上的第二部分和第三部分中没有内容, 不知道是什么原因, 所以只能直接翻译第四部分了。 由于博主英语水平有限, 翻译不足之处, 烦请大神指教。 希望能够帮助到那些挣扎在 Django Xadmin 里面的小伙伴们。

恋梦轩 5303

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Django Xadmin 官方文档 之五 Xadmin 插件制作

Django Xadmin 官网上的第五部分, 讲解的是 Xadmin 的插件原理及实例, 还有如何开发插件。 希望能够帮助挣扎在 Django Xadmin 中的小伙伴们。

恋梦轩 4198

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Django的Admin和Xadmin的使用

django内置了一个强大的组件叫Admin,提供给网站管理员快速开发运营后台的管理站点。 站点文档: https://docs.djangoproject.com/zh-hans/2.2/ref/contrib/admin/ 辅助文档:https://www.runoob.com/django/django-admin-manage-tool.html 注意:要使用Admin,必须先创建超级管理员. python manage.py createsuperuser 访问地址:http:/

有用的话关个注,点个赞,收个藏🫶。 1714

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

xadmin使用

Django admin介绍 后台管理系统特点: 权限管理 少前端样式(样式一般不是很看重) 快速开发 django的后台管理系统是一套智能的管理系统 django的杀手锏之一就是admin管理系统 admin在项目新建的时候已经为我们生成好了 访问:http://127.0.0.1:8000/admin/ 可以看到admin登录窗口 Django是不会自动生成admin的用...

剑魂的博客 1370

xadmin的使用

xadmin的使用 文章目录xadmin的使用一、前端后台模板介绍二、xadmin介绍三、安装四、使用1.站点的全局配置3.站点Model管理 一、前端后台模板介绍 前端后台模板 -Xadmin:基于layui写的一个后台管理模板,便于大家快速搭建后台管理 -layui也有一套后台管理 -bootstrap:后台管理自己搭建(bbs的后台管理) -admin lte -django的admin继续写 -xadmin:bootstrap+jq ---基本上废弃 -simple u

淘小欣的博客 8724

第五章 通过xadmin快速搭建后台管理系统

第五章 通过xadmin快速搭建后台管理系统1、Django amdin介绍后台管理系统的特点: - 权限管理 - 少前段样式 - 快速开发 xadmin是Django中的一个杀手级后台管理系统 xadmin是Django自带的,在新建项目时就已经存在的。打开settings.py文件就可以看到Installed_apps中有django.contrb.admin一项。 Instal

yiqiedouhaohi的博客 3061

Django之强大后台xadmin的使用(一)

            大家可能觉得django自带的后台管理系统看着略有些别扭,这里给大家介绍一下xadmin后台管理系统,是基于bootstrap开发的,也可以认为xadmin也是一个app,下来记录下自己学习的过程。1.准备工作...

MANKVIS的博客 1万+

xadmin快速搭建后台管理系统

一.xadmin的特点: 1.基于Bootstrap3:Xadmin使用Bootstrap3.0框架精心打造。基于Bootstrap3,Xadmin天生就支持在多种屏幕上无缝浏览,并完全支持Bootstrap主题模板,让您的管理后台也动感、多样起来。 2.内置功能丰富:Xadmin作为一款全面的后台管理系统框架,不仅提供了基本的CRUD功能,还内置了丰富的插件功能。包括数据...

weixin_34104341的博客 884
上一篇: Xadmin操作心得,持续更新!
下一篇: mysql从5.5升级到5.7【ubuntu】
Python_anning
博客等级 码龄9年 1409粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值