Django REST Framework 入门指南:构建强大的Web API

Django REST Framework 入门指南:构建强大的Web API

【免费下载链接】django-rest-framework encode/django-rest-framework: Django REST framework 是一个强大的 Web API 开发工具包,专为 Django 框架设计,提供了一套丰富的功能集来构建 Web API,包括序列化、分页、权限管理等。 【免费下载链接】django-rest-framework 项目地址: https://gitcode.com/gh_mirrors/dj/django-rest-framework

Django REST Framework(简称DRF)是一个功能强大且灵活的Web API开发工具包,专为Django框架设计。它提供了一套完整的解决方案,让开发者能够快速构建高质量的RESTful API。作为Django生态系统中最重要的扩展之一,DRF已经成为构建Web API的事实标准。本文将从DRF的核心特性、安装配置、实际示例到调试工具,全面介绍如何使用DRF构建强大的Web API。

Django REST Framework 简介与核心特性

Django REST Framework(简称DRF)是一个功能强大且灵活的Web API开发工具包,专为Django框架设计。它提供了一套完整的解决方案,让开发者能够快速构建高质量的RESTful API。作为Django生态系统中最重要的扩展之一,DRF已经成为构建Web API的事实标准。

什么是Django REST Framework?

Django REST Framework是一个基于Django的Web API框架,它扩展了Django的功能,专门用于构建RESTful API。与传统的Django视图不同,DRF提供了一系列专门为API开发设计的组件和工具,使得API的开发变得更加简单、规范和高效。

DRF的核心设计理念是提供"可浏览的Web API",这意味着开发者可以直接在浏览器中测试和调试API,大大提升了开发效率。同时,DRF遵循REST架构风格,支持标准的HTTP方法(GET、POST、PUT、PATCH、DELETE等),并提供了丰富的功能来处理数据序列化、认证、权限、限流等常见API需求。

核心特性概览

1. 强大的序列化系统

DRF的序列化系统是其最核心的特性之一,它负责将复杂的数据类型(如Django模型实例)转换为Python原生数据类型,以及将Python原生数据类型转换为响应内容。

from rest_framework import serializers
from django.contrib.auth.models import User

class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ['url', 'username', 'email', 'is_staff']

序列化器支持多种字段类型,包括基本字段、关系字段和自定义字段,同时还提供了丰富的验证功能。

2. 基于类的视图系统

DRF提供了丰富的基于类的视图,从基础的APIView到功能齐全的ViewSet,满足不同复杂度的API需求。

mermaid

3. 自动化路由系统

DRF的路由系统能够自动为ViewSet生成URL配置,大大简化了URL路由的管理。

from rest_framework import routers
from .views import UserViewSet, GroupViewSet

router = routers.DefaultRouter()
router.register(r'users', UserViewSet)
router.register(r'groups', GroupViewSet)

urlpatterns = router.urls
4. 丰富的认证和权限系统

DRF提供了多种认证方式和权限控制机制,确保API的安全性。

认证方式描述适用场景
TokenAuthentication基于令牌的认证移动应用、单页面应用
SessionAuthentication基于会话的认证浏览器环境
BasicAuthenticationHTTP基本认证简单的API访问
JWTAuthenticationJWT令牌认证分布式系统
5. 可浏览的API界面

DRF最引人注目的特性之一就是其内置的可浏览API界面,开发者可以直接在浏览器中测试API,查看文档,并进行交互式操作。

mermaid

6. 灵活的内容协商

DRF支持多种内容格式,能够根据客户端的Accept头自动选择最合适的渲染器。

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    ],
    'DEFAULT_PARSER_CLASSES': [
        'rest_framework.parsers.JSONParser',
        'rest_framework.parsers.FormParser',
    ]
}
7. 强大的过滤和搜索功能

DRF提供了灵活的过滤后端,支持字段过滤、搜索过滤和排序功能。

from rest_framework import filters

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    filter_backends = [filters.SearchFilter, filters.OrderingFilter]
    search_fields = ['username', 'email']
    ordering_fields = ['username', 'date_joined']
8. 分页支持

DRF内置了多种分页方案,可以根据需求选择合适的分页方式。

分页类描述特点
PageNumberPagination页码分页传统的页码式分页
LimitOffsetPagination限制偏移分页灵活的偏移量分页
CursorPagination游标分页适用于大数据集,性能优化
9. 限流控制

DRF提供了灵活的限流机制,可以防止API被滥用。

REST_FRAMEWORK = {
    'DEFAULT_THROTTLE_CLASSES': [
        'rest_framework.throttling.AnonRateThrottle',
        'rest_framework.throttling.UserRateThrottle',
    ],
    'DEFAULT_THROTTLE_RATES': {
        'anon': '100/day',
        'user': '1000/day',
    }
}
10. 版本管理

DRF支持多种API版本管理方案,便于API的演进和兼容性维护。

REST_FRAMEWORK = {
    'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.URLPathVersioning',
    'DEFAULT_VERSION': 'v1',
    'ALLOWED_VERSIONS': ['v1', 'v2'],
}

技术架构设计

DRF的架构设计遵循了高度模块化和可扩展的原则,各个组件之间松散耦合,可以根据需要进行定制和扩展。

mermaid

生态系统和社区支持

Django REST Framework拥有活跃的社区和丰富的生态系统,提供了大量的第三方包和扩展:

  • DRF-extensions: 提供嵌套路由、缓存扩展等功能
  • DRF-yasg: 自动生成OpenAPI/Swagger文档
  • Django-filter: 强大的过滤功能集成
  • DRF-jwt: JWT认证支持
  • DRF-spectacular: 另一种OpenAPI文档生成方案

适用场景

Django REST Framework适用于多种开发场景:

  1. 构建后端API服务: 为Web应用、移动应用提供数据接口
  2. 微服务架构: 作为微服务之间的通信接口
  3. 第三方API集成: 为第三方开发者提供开放的API接口
  4. 内部系统集成: 企业内部系统之间的数据交换
  5. 快速原型开发: 快速构建可用的API原型

性能考虑

虽然DRF提供了丰富的功能,但在性能敏感的场景中需要注意:

  • 序列化器的性能开销
  • 可浏览API界面的渲染成本
  • 复杂查询的优化
  • 缓存策略的实施

通过合理的配置和优化,DRF完全可以满足高性能API的需求。

Django REST Framework通过其全面的功能集、优雅的设计和强大的扩展性,为Django开发者提供了构建现代Web API的最佳实践。无论是简单的CRUD操作还是复杂的业务逻辑,DRF都能提供合适的工具和模式来简化开发过程,提高代码质量和可维护性。

安装配置与环境搭建

Django REST Framework (DRF) 是一个功能强大的Web API开发工具包,专为Django框架设计。要开始使用DRF,首先需要正确配置开发环境并进行安装。本节将详细介绍DRF的安装要求、环境配置、依赖管理以及最佳实践。

系统要求与兼容性

在安装DRF之前,请确保您的系统满足以下最低要求:

组件最低版本推荐版本备注
Python3.9+3.11+仅支持Python 3系列
Django4.2+5.2+支持Django 4.2, 5.0, 5.1, 5.2
pip9.0+最新版本用于包管理

mermaid

安装Django REST Framework

DRF可以通过pip包管理器轻松安装。建议在虚拟环境中进行安装,以避免依赖冲突。

使用pip安装
# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate  # Linux/Mac
# 或 venv\Scripts\activate  # Windows

# 安装Django REST Framework
pip install djangorestframework

# 如果需要安装特定版本
pip install djangorestframework==3.16.1

# 或者安装开发版本
pip install git+https://gitcode.com/gh_mirrors/dj/django-rest-framework.git
验证安装

安装完成后,可以通过以下命令验证DRF是否成功安装:

python -c "import rest_framework; print(rest_framework.__version__)"
# 输出: 3.16.1

Django项目配置

安装DRF后,需要在Django项目的设置文件中进行配置。

基本配置

在您的Django项目的settings.py文件中,添加DRF到INSTALLED_APPS

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 添加Django REST Framework
    'rest_framework',
]
DRF设置配置

DRF提供了丰富的配置选项,可以通过REST_FRAMEWORK字典进行自定义:

REST_FRAMEWORK = {
    # 默认渲染器类
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    ],
    # 默认解析器类
    'DEFAULT_PARSER_CLASSES': [
        'rest_framework.parsers.JSONParser',
        'rest_framework.parsers.FormParser',
        'rest_framework.parsers.MultiPartParser'
    ],
    # 默认认证类
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication'
    ],
    # 默认权限类
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.AllowAny',
    ],
    # 分页设置
    'DEFAULT_PAGINATION_CLASS': None,
    'PAGE_SIZE': None,
    # 其他设置...
}

可选依赖包

DRF支持多个可选依赖包,可以根据项目需求选择安装:

# 安装可选依赖
pip install django-filter       # 过滤支持
pip install markdown           # Markdown支持
pip install django-guardian    # 对象级权限
pip install pygments           # 语法高亮
pip install PyYAML             # YAML支持
pip install coreapi            # Core API支持
pip install coreschema         # Core Schema支持

开发环境配置最佳实践

使用requirements文件管理依赖

建议使用requirements文件来管理项目依赖:

# requirements/base.txt
Django>=4.2
djangorestframework>=3.16.1

# requirements/development.txt
-r base.txt
django-filter
markdown
pygments

# requirements/production.txt  
-r base.txt
psycopg2-binary
gunicorn
配置开发设置

创建开发专用的设置文件:

# settings/development.py
from .base import *

DEBUG = True

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    ],
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.SessionAuthentication',
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.AllowAny',
    ]
}

URL配置

在项目的urls.py文件中配置DRF的路由:

from django.contrib import admin
from django.urls import path, include
from rest_framework import routers

# 创建路由器实例
router = routers.DefaultRouter()

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]

环境验证

完成配置后,运行以下命令验证环境是否配置正确:

# 应用数据库迁移
python manage.py migrate

# 创建超级用户
python manage.py createsuperuser

# 启动开发服务器
python manage.py runserver

访问 http://127.0.0.1:8000/api/ 应该能看到DRF的可浏览API界面。

故障排除

常见问题及解决方案
问题解决方案
ImportError: No module named 'rest_framework'确保DRF已安装且虚拟环境已激活
版本兼容性问题检查Python和Django版本是否符合要求
设置未生效确保INSTALLED_APPS中包含'rest_framework'
调试技巧
# 在settings.py中添加调试信息
import rest_framework
print(f"DRF版本: {rest_framework.__version__}")
print(f"Python版本: {sys.version}")
print(f"Django版本: {django.__version__}")

通过以上步骤,您已经成功安装并配置了Django REST Framework的开发环境。现在可以开始构建强大的Web API了。记得根据项目需求调整配置,并遵循Django和DRF的最佳实践。

第一个REST API示例:用户管理系统

Django REST Framework(DRF)是一个功能强大且灵活的Web API工具包,专为Django框架设计。它提供了一套完整的工具集来构建RESTful API,包括序列化、认证、权限控制、分页等功能。在本节中,我们将通过一个实际的用户管理系统示例,展示如何使用DRF快速构建功能完整的REST API。

项目初始化与配置

首先,我们需要创建一个新的Django项目并安装必要的依赖:

pip install django djangorestframework
django-admin startproject user_management .
python manage.py migrate
python manage.py createsuperuser

在项目的settings.py文件中添加DRF到已安装应用:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
]

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',
    ]
}

序列化器(Serializer)设计

序列化器是DRF的核心组件之一,负责将复杂的数据类型(如模型实例)转换为Python原生数据类型,以及将Python原生数据类型转换为复杂的数据类型。

from django.contrib.auth.models import User
from rest_framework import serializers

class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ['url', 'username', 'email', 'is_staff', 'date_joined']
        read_only_fields = ['date_joined']

让我们通过一个流程图来理解序列化器的工作流程:

mermaid

视图集(ViewSet)实现

视图集提供了对模型的标准CRUD操作的封装,大大简化了API端点的开发:

from rest_framework import viewsets
from django.contrib.auth.models import User
from .serializers import UserSerializer

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer
    permission_classes = [permissions.IsAuthenticatedOrReadOnly]

ModelViewSet自动提供了以下标准操作:

HTTP方法动作描述
GETlist获取用户列表
GETretrieve获取单个用户详情
POSTcreate创建新用户
PUTupdate更新用户信息
PATCHpartial_update部分更新用户信息
DELETEdestroy删除用户

路由配置

使用DRF的路由器自动生成URL配置:

from django.urls import include, path
from rest_framework import routers
from . import views

router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)

urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]

路由器自动生成以下URL模式:

mermaid

API功能测试

启动开发服务器后,我们可以使用curl命令测试API功能:

# 获取用户列表
curl -H 'Accept: application/json; indent=4' http://127.0.0.1:8000/users/

# 创建新用户
curl -X POST -d "username=newuser&email=newuser@example.com&password=securepassword" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     http://127.0.0.1:8000/users/

# 获取特定用户详情
curl http://127.0.0.1:8000/users/1/

# 更新用户信息
curl -X PUT -d "username=updateduser&email=updated@example.com" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     http://127.0.0.1:8000/users/1/

# 删除用户
curl -X DELETE http://127.0.0.1:8000/users/1/

高级功能扩展

DRF提供了丰富的扩展功能,我们可以轻松地为用户管理系统添加更多特性:

1. 自定义权限控制
from rest_framework import permissions

class IsOwnerOrReadOnly(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        if request.method in permissions.SAFE_METHODS:
            return True
        return obj == request.user
2. 分页配置
REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 10
}
3. 过滤和搜索
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import filters

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    filter_backends = [DjangoFilterBackend, filters.SearchFilter]
    filterset_fields = ['is_staff', 'is_active']
    search_fields = ['username', 'email']

数据关系映射

为了更好地理解用户模型的结构,让我们查看其类图表示:

mermaid

错误处理与验证

DRF提供了完善的错误处理机制,确保API的健壮性:

# 自定义验证逻辑
class UserSerializer(serializers.HyperlinkedModelSerializer):
    def validate_username(self, value):
        if len(value) < 3:
            raise serializers.ValidationError("用户名至少需要3个字符")
        return value
    
    def validate(self, data):
        if data['username'] == data['password']:
            raise serializers.ValidationError("用户名和密码不能相同")
        return data

性能优化建议

对于生产环境的用户管理系统,建议考虑以下优化措施:

  1. 数据库查询优化:使用select_relatedprefetch_related减少查询次数
  2. 缓存策略:对频繁访问的用户数据实施缓存
  3. 分页优化:使用游标分页代替页码分页以提高性能
  4. 异步处理:对于耗时的操作使用Celery进行异步处理

通过这个完整的用户管理系统示例,我们展示了Django REST Framework的核心功能和最佳实践。DRF的强大之处在于其模块化设计,开发者可以根据具体需求灵活选择和组合各种组件,快速构建出功能丰富、性能优异的RESTful API。

可浏览API界面与调试工具

Django REST Framework 最引人注目的特性之一就是其强大的可浏览API界面和丰富的调试工具集。这些功能极大地简化了API的开发、测试和调试过程,为开发者提供了直观的交互体验。

可浏览API界面 (Browsable API)

可浏览API是Django REST Framework的默认功能,它为每个API端点自动生成美观的Web界面。这个界面不仅展示了API的结构和数据,还提供了交互式的表单来进行数据操作。

核心特性

自动生成的Web界面 每个API端点都会自动生成一个HTML页面,包含以下元素:

  • HTTP方法选择器:支持GET、POST、PUT、PATCH、DELETE等操作
  • 实时数据展示:以格式化的JSON形式显示响应数据
  • 交互式表单:基于序列化器自动生成的数据输入表单
  • 认证支持:集成Django的认证系统,支持用户登录/登出
  • 响应头信息:显示完整的HTTP响应头信息

配置示例

# settings.py
REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',  # 启用可浏览API
    ]
}
界面功能详解

数据浏览与操作 mermaid

表单生成机制 可浏览API根据序列化器定义自动生成HTML表单:

# serializers.py
class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['username', 'email', 'first_name', 'last_name']

# 自动生成的表单包含:
# - username: 文本输入框
# - email: 邮箱输入框  
# - first_name: 文本输入框
# - last_name: 文本输入框
自定义可浏览API

你可以通过继承BrowsableAPIRenderer来自定义界面行为:

from rest_framework.renderers import BrowsableAPIRenderer, JSONRenderer

class CustomBrowsableRenderer(BrowsableAPIRenderer):
    def get_default_renderer(self, view):
        # 设置JSON为默认渲染器
        return JSONRenderer()
    
    def get_context(self, data, accepted_media_type, renderer_context):
        context = super().get_context(data, accepted_media_type, renderer_context)
        # 添加自定义上下文
        context['custom_title'] = 'My API Browser'
        return context

调试工具集

Django REST Framework提供了一系列强大的调试工具,帮助开发者快速测试和验证API。

APIRequestFactory

APIRequestFactory是用于创建测试请求的核心工具,它扩展了Django的RequestFactory

from rest_framework.test import APIRequestFactory
from rest_framework.test import force_authenticate

factory = APIRequestFactory()

# 创建各种类型的请求
get_request = factory.get('/api/users/')
post_request = factory.post('/api/users/', {'name': 'John'}, format='json')
put_request = factory.put('/api/users/1/', {'name': 'John Updated'}, format='json')

# 强制认证
user = User.objects.get(username='admin')
force_authenticate(request, user=user)
APIClient

APIClient提供了更高级的测试功能,支持完整的请求-响应周期:

from rest_framework.test import APIClient

client = APIClient()

# 认证方式
client.login(username='admin', password='password')  # 会话认证
client.credentials(HTTP_AUTHORIZATION='Token abc123')  # Token认证
client.force_authenticate(user=user)  # 强制认证

# 执行请求
response = client.get('/api/users/')
response = client.post('/api/users/', {'name': 'John'}, format='json')
测试工具对比表
工具使用场景优点缺点
APIRequestFactory单元测试,直接测试视图轻量级,快速不处理中间件
APIClient集成测试,完整请求周期支持完整堆栈相对较慢
RequestsClient模拟外部客户端真实HTTP请求需要完全限定URL
CoreAPIClient基于CoreAPI的测试支持模式发现需要额外依赖
调试技巧与实践

实时调试输出

# 在测试中启用详细输出
import logging
logging.basicConfig(level=logging.DEBUG)

def test_api_debug():
    client = APIClient()
    response = client.get('/api/users/')
    print(f"Status: {response.status_code}")
    print(f"Headers: {dict(response.items())}")
    print(f"Content: {response.content.decode()}")

错误处理与验证

def test_api_with_error_handling():
    try:
        response = client.post('/api/users/', {'invalid': 'data'}, format='json')
        response.raise_for_status()  # 抛出HTTP错误
    except Exception as e:
        print(f"Error: {e}")
        # 分析错误详情
        if hasattr(e, 'response'):
            print(f"Response: {e.response.content.decode()}")

高级调试功能

自定义测试渲染器

你可以创建自定义的测试渲染器来支持特定的数据格式:

from rest_framework.renderers import BaseRenderer

class YamlRenderer(BaseRenderer):
    media_type = 'application/yaml'
    format = 'yaml'
    
    def render(self, data, accepted_media_type=None, renderer_context=None):
        import yaml
        return yaml.dump(data, encoding='utf-8')

# 在测试中使用
client = APIClient()
response = client.get('/api/data/', HTTP_ACCEPT='application/yaml')
性能分析与监控
# 添加性能监控中间件
MIDDLEWARE = [
    'django.middleware.cache.UpdateCacheMiddleware',
    'rest_framework.middleware.PerformanceMonitoringMiddleware',
    # ...其他中间件
]

# 在测试中分析性能
from django.test.utils import setup_test_environment
setup_test_environment()

def test_api_performance():
    import time
    start_time = time.time()
    
    for _ in range(100):
        client.get('/api/users/')
    
    end_time = time.time()
    print(f"Requests per second: {100 / (end_time - start_time):.2f}")

实用调试工作流

mermaid

最佳实践建议

  1. 始终启用可浏览API:在开发环境中保持可浏览API的启用状态
  2. 编写全面的测试:覆盖各种边界情况和错误场景
  3. 使用适当的认证方法:根据API类型选择合适的测试认证方式
  4. 监控性能指标:定期进行性能测试和优化
  5. 文档与测试结合:确保API文档与实际行为一致

通过充分利用Django REST Framework提供的可浏览API界面和调试工具,开发者可以显著提高API开发效率,减少调试时间,并确保API的稳定性和可靠性。

总结

Django REST Framework通过其全面的功能集、优雅的设计和强大的扩展性,为Django开发者提供了构建现代Web API的最佳实践。无论是简单的CRUD操作还是复杂的业务逻辑,DRF都能提供合适的工具和模式来简化开发过程,提高代码质量和可维护性。通过充分利用DRF提供的可浏览API界面和调试工具,开发者可以显著提高API开发效率,减少调试时间,并确保API的稳定性和可靠性。

【免费下载链接】django-rest-framework encode/django-rest-framework: Django REST framework 是一个强大的 Web API 开发工具包,专为 Django 框架设计,提供了一套丰富的功能集来构建 Web API,包括序列化、分页、权限管理等。 【免费下载链接】django-rest-framework 项目地址: https://gitcode.com/gh_mirrors/dj/django-rest-framework

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值