Python Flask 编程 | 连载 06 - Jinja2 语法

【Python】Jinja2:快速上手 Jinja2 是一个广泛使用的 Python 模板引擎,它允许你使用模板语法生成动态的 HTML、XML、或者其他文本文件。Jinja2 是 Flask 和 FastAPI 等 Web 框架中默认的模板引擎,但它也可以在任何 Python 项目中独立使用。 阅读详情

一、Jinja2 模板变量

上下文处理器

上下文处理器 context_processor 可以在模板上下文中添加新的内容,添加的内容可以是变量,也可以是函数。

在 app.py 中新增一个视图函数。

python
复制代码
# 其余代码不变

@app.context_processor
def inject_var():
    print("inject_var 方法被调用")
    data = {"username": "stark"}
    return data

在 object.html 页面中使用上面视图函数中定义的变量,在 body 标签中增加如下内容:

html
复制代码
<h2>通过上下文处理器添加的变量</h2>
<p>{{ username }}</p>

保存代码,浏览器访问 /object。

image.png

需要注意的是:

  • context_processor 作为一个装饰器修饰一个函数。
  • 函数的返回结果必须是 dict,届时 dict 中的 key 将作为变量在所有模板中可见。

模板变量的使用

模板引擎渲染页面大概有以下几个步骤:

  1. 从磁盘中读取 HTML 字符串
  2. 将满足特定规则的内容进行替换
  3. 发送给浏览器进行展示

在替换内容时字典,元组,列表数据结构在模板中也可以使用 {{ var }} 来获取变量的值。

字符串、整数和浮点数数据类型的渲染

在 app.py 中新建一个视图函数 render_smiple_data。

python
复制代码
@app.route('/render_simple_data')
def render_simple_data():
    name = 'Thor'
    age = 1500
    score = 90.00
    return render_template('data.html', name=name, age=age, score=score)

在 templates 文件夹中创建 data.html 页面。

html
复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>Render Data</title>
</head>
<body>
    <h1>Render Data</h1>
    <h3> name: {{ name }}</h3>
    <h3> age: {{ age }}</h3>
    <h3> score: {{ score }}</h3>
</body>
</html>

保存代码,浏览器访问 /render_simple_data

image.png

字符串、整数和浮点数等基本数据类型都被渲染出来。

字典数据类型的渲染

而对于字典类型的数据,则可以使用 {{ dict.key }} 或者 {{ dict['key']}} 来渲染指定 Key 对应的 Value

新增视图函数 render_complex_data,将字典类型的数据传给前端。

python
复制代码
@app.route('/render_complex_data')
def render_complex_data():
    info = {
        'name': 'stark',
        'age': 40,
        'gender': 'M',
        'address': 'NYC'
    }
    return render_template('data.html', heros=heros, info=info)

在 data.html 中增加对字典的展示,在 body 标签中增加如下内容:

html
复制代码
<h2>Render Dict</h2>
<h3>info字典:{{ info }}</h3>
<h3>info字典中的name属性值为:{{ info.name }}</h3>
<h3>info字典中的address属性值为:{{ info['address'] }}</h3>

保存代码,浏览器访问 /render_complex_data。

image.png

列表和元组数据类型的渲染

针对 list 和 tuple 类型的数据索引来获取指定位置的元素。

在视图函数 render_complex_data 中增加一个存储列表类型的变量,并返回给前端。

python
复制代码
# 其余代码保持不变

@app.route('/render_complex_data')
def render_complex_data():
    heros = ['stark', 'thor', 'clint', 'banner']

    return render_template('data.html', heros=heros, info=info)

在 data.html 的 body 标签中增加如下代码:

html
复制代码
<h2>Render List</h2>
<h3>heros列表的内容为:{{ heros }}</h3>
<h3>heros列表中的索引为1的值是:{{ heros[1] }}</h3>
<h3>heros列表中的最后一个值是:{{ heros[-1] }}</h3>

保存代码,浏览器访问 /render_complex_data

image.png

嵌套数据类型的渲染

针对嵌套类型的数据,如列表嵌套字典的渲染,根据获取的元素的类型一层一层的获取目标数据。

新增视图函数 render_nest_data,该函数中返回给前端一个列表嵌套字典的数据。

python
复制代码
@app.route('/render_nest_data')
def render_nest_data():

    heros_info = [
        {'name': 'stark', 'address': 'New York'},
        {'name': 'thor', 'address': 'Asgard'},
        {'name': 'strange', 'address': 'New York'},
        {'name': 'peter', 'address': 'New York Queens'},
    ]

    return render_template('data.html', heros_info=heros_info)

将 data.html 中 body 标签的内容替换为如下内容:

html
复制代码
<h1>Render Data</h1>

<h2>Render Nest Data</h2>
<h3>heros_info 列表的内容为:{{ heros_info }}</h3>
<h3>heros_info 列表中的索引为1的字典的 name 属性值:{{ heros_info[1]['name'] }}</h3>
<h3>heros_info 列表中的最后一个字典的 address 属性值:{{ heros_info[-1]['address'] }}</h3>

保存代码,浏览器访问 /render_nest_data。

image.png

二、Jinja2 模板语法

模板标签

模板标签可以理解为模板中的一些关键字,比如在模板中实现循环、赋值或者条件判断等,模板标签由大括号和%组成,有的标签会带有结束标签,有的则没有。

html
复制代码
{% TAG %}

{% TAG1 %}
{% endTAG1 %}

条件判断表达式

html
复制代码
{% if A %}
    {# 满足A条件 #}
{% elif B %}
    {# 满足B条件 #}
{% else %}
    {# 满足其他条件 #}
{% endif %}


{% if value is xxx %}
    {# 符合条件要展示的内容或者执行的代码 #}
{% endif %}

模板中使用 {# #} 来包裹作为注释的内容

模板中包含了一些内置的判断条件,如:

  • defined/undefined,变量是否已定义
  • none,变量是否为none
  • number/string/even/odd, 是否是数字、字符串、奇数或者偶数
  • upper/lower,是否大小写

模板中可以使用如 and、or、==、!=、>、<、in、not in 等逻辑判断符进行条件判断

在 app.py 中新增视图函数 tag。

python
复制代码
@app.route('/tag')
def tag():
    name='stark'
    return render_template('tag.html', name=name)

在 templates 目录下新增 tag.html。

html
复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>Tag</title>
</head>
<body>
    <h2> == 逻辑判断符的使用</h2>
    {% if name == 'stark' %}
        <p>I am Iron Man</p>
    {% else %}
        <p> I am not Iron Man</p>
    {% endif %}
</body>
</html>

浏览器访问 /tag。

image.png

在 tag.html 的 body 标签中增加代码。

html
复制代码
<h2> defined 判断条件的使用</h2>
{% if age is defined %}
    <p>age变量已经被定义</p>
{% else %}
    <p>age变量没有被定义</p>
{% endif %}

浏览器再次访问 /tag

image.png

视图函数中是没有定义 age 变量的,所以页面中输出 age 没有被定义。

这里给大家分享一份Python全套学习资料,包括学习路线、软件、源码、视频、面试题等等,都是我自己学习时整理的,希望可以对正在学习或者想要学习Python的朋友有帮助!

优快云大礼包:全网最全《全套Python学习资料》免费分享🎁

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉优快云大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

​

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述
因篇幅有限,仅展示部分资料

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述
在这里插入图片描述
上述所有资料 ⚡️ ,朋友们如果有需要 📦《全套Python学习资料》的,可以扫描下方二维码免费领取 🆓
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉优快云大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

​

Jinja2是一种基于Python的模板引擎 Jinja2是一种基于Python的模板引擎,用于生成HTML或其他文本文件。它具有简洁的语法和强大的功能,使得模板的编写和维护变得简单而高效。 阅读详情

相关推荐

jinja2常用基本语法

FileSystemLoader中传入的是文件夹的名称,可以传入多个文件夹名称,该类会自动查找其路径。使用了 {% include 'port_conf.sub.conf.tpl' -%}data为list时,模板中可用data.0取第一个值'1.1.1.1'jinja2模板使用if 条件判断。传参数到jinja2模板文件。jinja2模板使用for循环。include导入其他模板。jinja2模板使用过滤器。jinja2模块化的模板。加载jinja2的模板。jinja2 模板继承。将渲染的模板写入文件。

qq_40671063的博客 3808

Python Jinja2:强大易用的模板引擎

总之,Jinja2是一个功能强大、易于使用和扩展的Python模板引擎,适用于各种需要模板引擎的应用场景。掌握它的基本功能能够提高我们的开发效率和代码可维护性,使我们能够更专注于实现应用程序的功能和需求。本文转自,如有侵权,请联系删除。

weixin_68789096的博客 4867

Flask---Jinja2模板引擎

文章目录什么是Jinja2模板引擎?Jinja2语法Flask模板引擎Jinja2案例(代码) 什么是Jinja2模板引擎? 官方网址: http://docs.jinkan.org/docs/jinja2/ Jinja2 是一个现代的,设计者友好的,仿照 Django 模板的 Python 模板语言。 它速度快,被广泛使用,并且提供了可选的沙箱模板执行环境保证安全: python的Web开发中...

Wangtuo1115的博客 431

Python(Web时代)——jinja2模板

Jinja2是Flask框架默认支持的模板引擎,是python的web项目中被广泛应用的一种模板引擎,jinja2的作者与Flask是同一个人。有些时候需要对要在模板中的变量值做一些特殊处理,比如首字母大写,去掉前后空格、字符串拼接等等,这时就可以使用过滤器。当遇到现有的过滤无法满足我们的需求时,这时就需要我们自定义一个过滤器了。通过 | 来使用过滤器,与Linux中的管道类似。非常灵活,提供了控制结构、表达式与继承等。控制结构(逻辑代码) {% %}变量取值 {{ }}

qq_25702235的博客 5001

Crush 终端 LLM 工具安装与使用指南:把 AI 编程助手装进你的命令行

喜欢命令行的开发者需要离线/轻量级 AI 助手的场景希望自定义模型与工具链的高级用户通过LSP + MCP + 多模型支持,Crush 不仅能写代码,还能理解项目、调用工具、连接服务,真正成为你的“终端编程搭档”。

weixin_44058951的博客 1616

【Qt-4】QT基于qhttp-server搭建http服务器

QT搭建http服务器

WXG1011的博客 5715

Flask06——Jinja2模板引擎

文章目录为什么要用模板模板的功能如何调用模板和传递变量过滤器自定义过滤器模板中定义宏模板的继承包含模板中访问内置函数和对象flash闪现 为什么要用模板 到目前为止,我们的视图函数返回的一直是简单的字符串,而我们很清楚的知道,我们的flask框架是做web开发的,也就是要做出来漂亮的页面出来,可是我们现在仅仅只返回了几个字符串,好像跟我们所预想的网站相差甚远。我们要怎样做出我们所看到的各种绚丽多彩...

lingjiphp的博客 758

用Matlab机器人工具箱搞定六轴机械臂建模:从DH参数到3D可视化(附完整代码)

本文详细介绍了如何使用Matlab机器人工具箱进行六轴机械臂建模,涵盖从DH参数转换到3D可视化的完整流程。通过正运动学验证、逆解计算和工作空间分析等实战案例,帮助开发者快速掌握机械臂建模技巧,并提供性能优化建议和完整代码示例。

weixin_28733637的博客 361

python进阶jinja2模版引擎

文章目录什么是Jinja2模板引擎?jinia2的语法 什么是Jinja2模板引擎? 在Python中,什么是模版?就是在一个静态HTML加入一些类似变量的标签,然后引擎在渲染这个HTML时候会动态的把变量填入内容,生成一个最终的HTML。 什么是模版引擎?其实就是一种能解析类似Python语言的标记语言的解释器。 比如我们在HTML模版中输入一个< p>{{ post.title }...

C_teacher的博客 1024

DeepSeek-OCR安装部署文档和避坑指南,包含大多数人遇到的安装报错问题

DeepSeek-OCR安装部署指南摘要:本文详细介绍高性能OCR工具DeepSeek-OCR的安装流程,支持多语言识别和复杂场景文字提取。系统要求包括Linux/Windows/macOS操作系统,推荐NVIDIA显卡(显存≥6GB)和≥16GB内存。安装步骤涵盖:1)创建conda虚拟环境;2)安装PyTorch等核心依赖;3)解决常见问题如CUDA版本冲突、模型下载慢等。提供GPU内存不足等问题的解决方案,帮助开发者快速部署OCR服务。(149字)

yolo模型训练找我,AI游戏合作找我 2957

【NIPS 2022】时序精选论文07|Non-stationary Transformers: 引入非平稳性信息的平稳化序列预测模型(代码解读附源码)

整体代码框架基本上与传统 Transformer 类似,基本上只有在内嵌的注意力机制模块有区别,因此这里只对关键部分进行讲解,代码整体框架可参考 Transformer。非平稳时序很难预测,尤其对模型泛化性影响很大,试想下推理阶段的数据分布变了,模型很难适应这种变化。,比如很早以前的差分就是一种平稳化操作。序列平稳化能增强数据的可预测性,但这时也会带来一个问题,叫。,通过MLP层进行定义,使得参数可学习,以便于更好的融合到注意力网络中。代码中整体注意力的计算方式与原生Transformer类似,

ViolenceTemper的博客 1495

打包python脚本(flask、jinja2)为exe文件

在我很早时候学习python的时候,就利用过某个工具将其打包为exe文件,然后在没有python环境的机器上运行,这样可以减少安装python环境和各种库的过程。最近在开发一个在虚拟机上运行的程序的时候就遇到了打包一些环境的问题,主要是由于flask这个应用的问题。

围城 885

解决k8s核心组件calico pod资源不创建问题

解决k8s核心组件calico pod资源不创建问题 1.问题描述 由于K8S集群Master节点故障,导致calico网络组件虽然处于Running状态,但是一直无法准备就绪,如下图所示 calico-node-lpt7h运行在master节点,第一时间紧急处理方法就是将其pod删除,让K8S自动重建该pod,使整个集群快速恢复 但是就当我将calico-node-lpt7h pod删除后,该pod始终无法自建,就好像是从来没有这个pod似的 2.解决方法 期初排查时,我觉得可能是由于当前master

江晓龙的博客 4808

Flask Web 框架中 Jinja2 模板引擎的理解

Flask Web 系列教程:Jinja2 模板引擎详解 本视频是 Flask Web 系列教程的第六部分,将深入讲解 Jinja2 模板引擎。 回顾前几部分内容: 已完成五个教程,涵盖了 Flask 基础知识、HTML 整合、HTTP 方法(GET、POST)等内容。 使用 Jinja2 模板引擎可以将 HTML 与数据源整合,从而动态渲染页面。 例如,在 result.html 中,可以使用...

krishnaik06的博客 348

SAP-ABAP:新手入门篇——从0到1写出你的第一个ABAP Hello World程序并完成调试运行

本文是ABAP开发入门指南,详细介绍如何创建并运行第一个"Hello World"程序。主要内容包括:通过SE38事务码进入ABAP编辑器;创建以Z/Y开头的程序并保存为本地对象;编写简单的WRITE输出语句;完成语法检查、激活和执行流程;以及初步体验调试功能。文章特别强调ABAP开发的规范要求,如程序命名规则、激活与保存的区别等,并提供了详细的步骤说明和常见问题提示,帮助零基础开发者快速上手ABAP编程。

baidu_35680696的博客 483

2025华为od机试真题B卷【停车场费用统计】Python实现

2025华为od机试真题B卷【停车场费用统计】Python实现

MISAYAONE的博客 539

Flask框架(二)模板引擎JinJa2

文章目录一.什么是JinJa2模板二.JinJa2语法1.Jinja2变量显示语法2.Jinja2变量内置过滤器3.如何自定义过滤器4.for循环5.if语句三.宏操作1.如何定义宏?2.如何调用宏?3.include包含操作4.模板的继承 一.什么是JinJa2模板 Jinja2 是一个现代的,设计者友好的,仿照 Django 模板的 Python 模板语言。 它速度快,被广泛使用,并且提供了可...

cainiaoayue的博客 295

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

基于Jinja2模板引擎的Python自动化报告生成器实战指南

自动化报告生成是现代数据处理与信息整合中的一项关键技术,其核心原理在于将动态数据与静态模板分离,通过渲染引擎实现内容的自动化填充与格式化。这项技术的核心价值在于将重复、繁琐的手工文档编制工作转化为高效、准确、可复用的自动化流程,极大地提升了工作效率并减少了人为错误。在实际应用中,它广泛适用于生成各类结构化文档,如运营日报、项目周报、系统监控报告等。本文以构建一个“科技日报”生成器为具体场景,深入探讨了如何运用Python生态中的Jinja2模板引擎,结合模块化设计思想,实现从数据获取、模板渲染到文件输出的完

weixin_33749131的博客 487

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Flask中的Response/Request/session/jinja2/装饰器

一. Response 1.Flask中的HTTPResponse Content-Type: text/html; charset=utf-8 from flask import Flask app = Flask(__name__) @app.route('/') # app中的路由装饰器 def home(): """ 视图函数 :return: 响应(5种) """ ret...

weixin_30562507的博客 400

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

2021-06-09-Python Flask学习笔记

layout: post comments: true title: Python—Flask学习笔记 categories: [course] typora-root-url: …\assets\blog_pic Flask是什么? Flask是目前十分流行的web框架,采用Python编程语言来实现相关功能。它被称为微框架(microframework),“微”并不是意味着把整个Web应用放入到一个Python文件,微框架中的“微”是指Flask旨在保持代码简洁且易于扩展,Flask框架的主要特征是.

weixin_44061171的博客 413

python的flask框架

Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。 Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具 导入Flask类库 from flask import Flask 创建应用实例 app = Flask(__name__) 路由解析,通过用户访问的路径,匹配相应的函

xuexiwd的博客 675

知了课堂python_Python框架Flask系列课程(2)—全栈开发[知了课堂]

教程目录:课时01.【Flask预热】课程介绍.flv课时02.【Flask预热】Flask课程准备工作.flv课时03.【Flask预热】URL组成部分详解.flv课时04.【Flask预热】web服务器+应用服务器+web应用框架.flv课时05.【Flask.URL】第一个flask程序详解.flv课时06.【Flask.URL】debug模式详解.flv课时07.【Flask.URL】配置...

weixin_39566864的博客 1182

pythondjangoddos_Flask中的Response/Request/session/jinja2/装饰器

一. Response1.Flask中的HTTPResponseContent-Type: text/html; charset=utf-8from flask import Flaskapp = Flask(__name__)@app.route('/') # app中的路由装饰器def home():"""视图函数:return: 响应(5种)"""return 'Hello Flask' #...

weixin_35910783的博客 327

02_Flask是什么?

通过本节课程的学习,大家会对Flask有一个初步的认识。在进行Python Web开发时,我们为什么优先选择学习Flask?Flask有哪些核心库?Flask有哪些特点?学完这节课,所有的问题都会为你解答。跟我学编程,免费领取配套学习资料。

在科技的浪潮中,我们寻找着创新的火种,在代码的海洋里,我们编织着智慧的网。腾飞开源,就是这样一个由技术精英汇聚而成的博客平台,我们致力于分享在Java、Python、IoT和人工智能等领域的最新研究成果和实战经验。 在腾飞开源的博客上,你会看到紧跟技术前 1069

flask框架(二)

模版引擎jinja2 1. 什么是Jinja2模板引擎? 官方网址: http://docs.jinkan.org/docs/jinja2/ Jinja2 是一个现代的,设计者友好的,仿照 Django 模板的 Python 模板语言。 它速度快,被广泛使用,并且提供了可选的沙箱模板执行环境保证安全: 1). python的Web开发中, 业务逻辑(实质就是视图函数的内容)和页面逻辑(html件...

qq_41355482的博客 572

Python_Flask基础到登录实现

视频教程教学地址:https://www.bilibili.com/video/BV18441117Hd?p=1 文章目录0x01路由0x02 模版和静态文件2.1 文件结构2.2代码2.3 运行效果0x03 json3.1运行效果0x04 重定向4.1 访问跳转4.2 打印路由4.3 跳转传参0x05 jinjia2模版5.1代码5.2 运行效果0x06 蓝图6.1代码结构6.2 代码0x07 登录7.1结构7.2代码7.3实现效果7.3.1未登录默认跳转到登录页面7.3.2登录成功跳转到index页面7

慢就是快 299
上一篇: Python Flask 编程 | 连载 05 - Jinja2 模板引擎
下一篇: Python Flask 编程 | 连载 07 - Jinja2 语法
Llama-Turbo
博客等级 码龄4年 9901粉丝 2024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值