Python Flask 编程 | 连载 05 - Jinja2 模板引擎

Flask Jinja2模板引擎 Jinja2是Python下一个被广泛应用的模版引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能。其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能,这对大多应用的安全性来说是非常重要的(来源百度百科)。 阅读详情

一、认识模板以及模板引擎

在 MTV 模型中,T 既 Templates 模板,模板是一个包含响应文本的文件(通常是html文件),该文件中允许包含 ”占位变量“ 来表示动态的内容,其具体值会在请求的响应中给出。”占位变量“ 最终会被真实的值所替换。模板解析成相应的字符串,这一过程称为 ”渲染“。Flask 框架使用的是 Jinja2 模板引擎。

模板引擎的基础语法主要包含了变量、标签和过滤器的使用,以及模板的抽象即通过继承和包含来减少重复代码,除此之外还有包含了一些全局函数等。

使用 PyCharm 创建新的项目 flask-templates。

image.png

在启动配置中开启 Debug 模式。

image.png

在 templates 文件夹下新建一个 index.html 模板,在 app.py 中新增视图函数 show_html,该函数返回这个 html 页面。

html
复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>Index</title>
</head>
<body>
    <h1>Hallo,This is Index!</h1>
</body>
</html>
python
复制代码
from flask import render_template

@app.route('/index')
def show_html():
    return render_template('index.html')

启动 Flask 应用,在浏览器输入 http://127.0.0.1:5000/index

image.png

页面被成功渲染,show_html 视图函数中的 render_template 函数会从磁盘中读取 HTML 模板中的字符串,并且将满足特定规则的变量或者内容替换为具体的值,最后再发送给浏览器,展示出 HTML 页面。

如果不使用 render_template 函数渲染模板,可以直接通过读取模板中的内容返回给浏览器,浏览器也会解析 HTML 代码。

python
复制代码
@app.route('/index')
def show_html():
    html = os.path.join(os.getcwd(), 'templates', 'index.html')

    # 读取html中的内容
    with open(html, 'r') as h:
        context = h.read()
    return context

保存内容,浏览器中访问 http://127.0.0.1:5000/index

image.png

效果与使用 render_template 函数一致。

如果模板中有需要动态替换的变量,比如模板能够实时显示当前当前时间,这就需要先在模板中进行占位,我们约定通过 {{}} 包裹的字符都是变量,在响应时需要动态替换。

在 index.html 中增加内容。

html
复制代码
<h2>Now is : {{ now }}</h2>

修改 show_html 视图函数,将 {{now}} 替换为动态的时间。

python
复制代码
from flask import Flask, render_template
import os
import datetime


@app.route('/index')
def show_html():
    html = os.path.join(os.getcwd(), 'templates', 'index.html')

    # 当前时间
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    # 读取html中的内容
    with open(html, 'r') as h:
        context = h.read()
    # 变量替换
    context = context.replace('{{ now }}', now)
    return context

在浏览器中访问 /index

image.png

页面中展现出当前时间,此时刷新页面,页面中显示的时间会与当前时间保持一致。

当模板中包含了条件判断等逻辑,这就会导致视图函数越来越复杂,所以就有了模板的概念,并且这也会导致试图函数中包含很多公共代码,为了方便维护推荐使用 Jinja2 模板模板引擎。

二、Jinja2模板引擎

Jinja2 模板引擎

Flask 使用 Jinja2,需要单独进行安装。

bash
复制代码
pip3 install Jinja2

Flask 类的 __init__ 构造函数中指定了默认的模板目录项目根路径下的 templates 文件夹。

python
复制代码
template_folder="templates",

当然也可以在实例化 Flask 对象时指定自定义的模板目录。

python
复制代码
app = Flask(__name__, template_folder="temps")

渲染函数 render_template 和 render_template_string

render_template 函数可以将 xml 或者 html 进行转义,render_template_string 可以将字符串进行转义。

在 app.py 中新增两个视图函数,分别使用了 render_template 函数和render_template_string 函数渲染视图函数返回的内容。

python
复制代码
@app.route('/render')
def diff_render():
    return render_template('index.html')


@app.route('/render_str')
def diff_render_str():
    return render_template_string('index.html')

浏览器访问 */render *

image.png

浏览器访问 render_str

image.png

两个视图函数返回的内容都是 index.html 页面,但是 render_template 函数将同名的模板 index.html 页面解析出来,而 render_template_string 则直接返回了字符串 index.html。

转义

转义就是将特殊字符显示出来,比如在页面中显示一段 html 代码,就需要使用到转义。

转义有两种方式,第一种是通过转义字符代替特殊字符。

在 index.html 的 body 标签内增加内容

html
复制代码
<h2>下面是一段要在页面中显示的超链接HTML代码</h2>
<a href="#">点击</a>

增加视图函数 transfer

python
复制代码
@app.route('/transfer')
def transfer():
    return render_template('index.html')

浏览器访问 http://127.0.0.1:5000/transfer

image.png

超链接 HTML 没有显示出来,而是被转义成了 HTML。

使用转义字符代替特殊字符,常用的转义字符有:

  • “:”
  • 空格: 
  • ¥:¥
  • <:<
  • : >

修改 index.html 的内容

html
复制代码
<h2>下面是一段要在页面中显示的超链接HTML代码</h2>
&lt;a href="#"&gt;点击&lt;/a&gt;

再次访问 /transfer

image.png

超链接代码被展示出来了。

第二种方式是通过模板中的 {% autoescape %} 来设置是否转义,默认模板是开启转义的,在 index.html 中增加代码。

html
复制代码
<!--false表示关闭自动转义,默认时开启的-->
{% autoescape false %}
    {{ info }}
{% endautoescape %}

在视图函数中返回一段HTML代码

python
复制代码
@app.route('/transfer')
def transfer():
    info = "<a href='#'>超链接</a>"
    return render_template('index.html', info=info)

image.png

使用 autoescape 时一定要注意关闭,并且 autoescape 设置只对返回变量包含 html 代码时有效。

模板中的全局对象

模板中包含了以下几个全局对象,可以直接使用:

  • config:Flask的配置信息对象
  • request:请求对象
  • response:响应对象
  • g:请求相关的全局变量

新增一个 object.html 模板,在该模板中使用全局变量占位。

html
复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>Global Object</title>
</head>
<body>
    <h2>Flask的配置信息对象</h2>
    <p>config: {{ config }}</p>

    <h2>Flask请求对象</h2>
    <p>request: {{ request }}</p>
</body>
</html>

增加一个视图函数,返回 object.html 页面

python
复制代码
@app.route('/object')
def object():
    return render_template('object.html')

浏览器访问 http://127.0.0.1:5000/object

image.png

g 是请求相关的全局对象,可以在 g 对象中设置一些全局变量,可以在所有请求中使用,可以在钩子函数中进行 g 对象属性的设置,在其他视图函数或者模板中获取 g 对象中的属性。

增加一个钩子函数,设置 g 对象的属性及属性值

python
复制代码
from flask import g

@app.before_first_request
def before_first_request():
    g.global_user = 'Tony Stark'

在 object.html 中增加内容,获取 g 对象及 g 对象在钩子函数中设置的属性值。

html
复制代码
<h2>g对象</h2>
<p>g: {{ g }}</p>
<p>g.global_user: {{ g.global_user }}</p>

image.png

这里给大家分享一份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学习资料》免费分享(安全链接,放心点击)👈

​

Python-模板注入 何为模板注入? 模板引擎可以让(网站)程序实现界面与数据分离,业务代码与逻辑代码的分离,哲大大提升了开发效率,良好的设计也是的代码重用变得更加容易。 到那时模板引擎也拓宽了我们的攻击面,注入到模板中的代码可能会引发RCE或者XSS flask基础 在学习SSTI之前,先把flask的运作流程搞明白,这样有利于更加快速的理解原理 路由 先看一段代码 from flask import flask @app.route('/index/') def hello_word(): . 阅读详情

相关推荐

Jinja2模板引擎的5个高级技巧:从变量渲染到宏定义

本文深入探讨Jinja2模板引擎的5个高级技巧,从变量渲染到宏定义,帮助Python开发者提升模板处理效率。涵盖过滤器链式调用、全局函数部署、宏模块化设计、模板继承优化及上下文处理等核心内容,适用于Flask、FastAPI等框架的复杂项目开发。

weixin_27741699的博客 168

flask之jinja2入门

一、宏 用于提高代码复用率 最简单封装好的对象 1、宏的定义 使用macro定义 {% macro func1(label='',type='text',name='') %} <label>{{label}}</label><input type="{{type}}" name="{{name}}"> {% endmacro %} 2...

changfcqxhy的博客 1767

(十一)Flask模板引擎jinja2

(十一)Flask模板引擎jinja2

孤寒者的博客 2万+

Flask的渲染方法函数---render_template()/render_template_string()

渲染方法 Flask 中的渲染方法有两种 : render_template() 和 render_template_string() render_template() 函数 渲染一个指定的文件 , 这个指定的文件其实就是模板 模板中代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title&g

weixin_53146913的博客 1万+

STM32 AFIO时钟开启时机与复用功能解析

在嵌入式系统开发中,GPIO复用是微控制器外设配置的核心技术之一。通过复用功能,单个物理引脚可以动态切换不同功能模式,如USART通信或普通IO。其实现原理依赖于芯片内部的时钟树架构和寄存器配置机制。AFIO(Alternate Function I/O)模块作为STM32的特色设计,专门处理引脚重映射、外部中断配置等高级功能。正确理解复用功能与AFIO时钟的关系,能显著提升嵌入式开发效率,避免资源浪费。本文以STM32为例,结合引脚重映射和USART配置等典型场景,详解AFIO时钟的实际应用规范与优化实践

weixin_42389113的博客 579

从RRT到平滑轨迹:机械臂避障规划仿真全流程解析

本文详细解析了机械臂避障规划从RRT算法到平滑轨迹优化的全流程,包括MATLAB实现、碰撞检测工程实践及轨迹平滑优化技巧。通过RRT算法在关节空间的路径搜索与Minimum Jerk/Snap优化,实现机械臂在复杂环境中的高效安全运动,适用于工业自动化与机器人控制领域。

weixin_29051811的博客 295

python web开发-Flask模板引擎Jinja2完全指南

本文全面介绍Flask框架默认模板引擎Jinja2的核心功能与使用技巧。内容涵盖基础语法(变量渲染、控制结构)、模板继承机制、常用过滤器、宏定义等核心概念,并深入讲解模板上下文处理、安全防护措施和性能优化方法。文章通过丰富代码示例演示了Jinja2在Web开发中的实际应用,包括自定义过滤器/测试、空白控制等高级特性。适合从入门到精通的各阶段开发者参考学习,帮助构建更安全高效的Flask应用模板系统。

人工智能微客/aiweker 1989

【测绘程序设计】——潮汐调和分析

最小二乘潮汐调和分析源码、使用示例及数据

C_xxy's blog 2653

02_Flask是什么?

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

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

ZYNQ 使用AXI_BRAM实现PS与PL 数据交互数据交互

有时CPU需要与PL进行小批量的数据交换,可以通过Block RAM实现。通过Zynq 的GP Master 接口读写PL端的 BRAM,实现PS与PL的交互。加入自定义的 FPGA 程序,并利用 AXI4 总线进行配置,通知何时读写 BRAM。CPU通过 AXI BRAM Controller 读取 BRAM 数据,CPU 仅配置自定义的 PL BRAM Controller 的寄存器,不通过它读写数将BRAM与socket进行联合使用,将电脑的数据发到PS端,PS端放在PL端,PL端再发给PS端,P据。

wangjie36的博客 1万+

k8s问题处理

执行 kubectl api-resources 报错如下。

weixin_40548182的博客 944

python Flask web 框架 (十六)

01-01 初识Flask 1 什么是flask? Flask 本是作者 Armin Ronacher在2010年4月1日的一个愚人节玩笑 ,不过后来大受欢迎,进而成为一个正式的python编写的web框架 Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务,在介绍Flask之前首先来聊下它和Django的联系以及区别,django个大而全的web框架,它内置许多模块,flask是一个小而精的轻量级框架,Django功能大而全,Flask只包含基本的

鱼的博客 635

基于深度学习的停车位检测系统(UI界面 + YOLOv8/v7/v6/v5代码 + 训练数据集)

传统的停车位检测方法主要依赖于人工或基于简单图像处理的技术,存在检测速度慢、准确率低、环境适应性差等问题。近年来,随着深度学习技术的快速发展,基于目标检测的停车位检测系统已成为研究的热点。本文基于YOLO(You Only Look Once)系列模型(包括YOLOv5、YOLOv6、YOLOv7和YOLOv8),开发了一个完整的停车位检测系统,支持实时检测、结果可视化以及UI交互界面。本文实现了一个基于深度学习的停车位检测系统,采用YOLO模型在实时视频流中进行高效检测。

YOLO 332

知了课堂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

【25年荣耀校招-()-4月18日-第二题(200分)- 测量接收信号】(题目+思路+Java&C++&Python解析+在线测试)

有一个接收机,以1ms为周期,测量接收信号强度。假设每个测量时刻所测量到的接收信号的强度是独立且同分布的。已知每个测量时刻的接收信号的强度的大于−100dBm的概率为Plarge。请求解以下事件的概率,并将概率输出:连续测量Nmeas次之内,有超过或等于Nover次的测量的接收信号的强度大于−100dBm。

m0_73659489的博客 73

AIGC算法工程师-面试八股文-2025年版本-算法八股文/工程八股文/开放式问题

​两年前整理了《AIGC算法工程师 面试八股文》,全网一共有100w读者看过,收到了很多小伙伴的催更。Diffusion的技术发展非常快,博主特意整理了最近两年最新的八股文,内容非常全面,涵盖算法八股文/工程八股文/开放式问题三个大类,希望能为求职的读者们带来帮助。

沉迷单车的追风少年 4188

Flask Web 开发全攻略:3 个步骤教你玩转路由与模板

在当今的数字化时代,Web 开发已经成为编程领域中最热门的技能之一。无论是构建个人博客、电商平台还是企业级应用,掌握一个简单易用的 Web 框架都能让你事半功倍。Flask,作为 Python 生态系统中一个轻量级的 Web 框架,以其简洁性和灵活性受到广大开发者的喜爱。本文将带你从零开始,学习Flask 框架的安装与使用创建简单的 Web 应用,以及路由与模板引擎的核心知识。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供清晰的操作步骤和实用示例,助你快速入门 Web 开发!

吴师兄大模型的博客 1049

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

2021-05-15

jinji2模板引擎 模板 借助模板引擎,我们可以在HTML文件中使用特殊的语法来标记出变量,这类包含固定内容和动态部分的可重用文件称为模板。模板引擎的作用是读取并执行模板中的特殊语法标记,并根据传入的数据将变量替换为实际值,输出最终的HTML页面,这个过程被称为渲染。 Jinja2 两个概念: ​ jinja2:是python下一个被广泛应用的模板引擎,是python实现的模板语言,它的设计思想来源于Django的模板引擎, ​ 并扩展了其语法何一系列强大的功能,其是Flask内置的模板语言 ​ 模板语言

ll010705的博客 190

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

08_Flask渲染模

08 Flask渲染模板,通过本节课程的学习,你将对Jinja2模板有一个初步的认识,学会Jinja2语法获取对象的属性值,条件判断和循环控制的使用。《Flask快速入门教程》,人人都能学,小白看得懂学得会,跟我学编程,免费领取配套学习资料。

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Python基于flask的在线学习考试系统_km08z05v

需要成品或者定制,文章最下方名片联系我即可~ 所有项目都经过测试完善,本系统包修改时间和标题,包安装部署运行调试,不满意的可以定制。在线学习考试系统需包含用户管理、课程学习、在线考试、成绩统计等功能模块。数据库工具:Navicat for mysql。开发软件:PyCharm/vscode。框架:flask/django。数据库 mysql 版本不限。前端开发框架:vue.js。开发语言:Python。

QQ_188083800的博客 37

flask模块

【代码】flask模块。

AgostoDu的博客 299

基于Flask与Python构建个人二次元角色图库:从零搭建轻量级图片管理系统

在Web开发领域,Python因其简洁语法和丰富的生态库,成为快速构建中小型应用的理想选择。Flask作为一款轻量级Web框架,以其灵活性和易用性,尤其适合个人开发者快速实现原型和功能。其核心原理是通过路由、模板和扩展机制,将后端逻辑与前端展示高效结合,实现动态内容管理。这种技术组合在个人内容管理系统中具有显著价值,能够帮助开发者高效处理数据存储、文件上传和动态展示等常见需求。典型的应用场景包括博客系统、个人仪表盘以及图片或资源库的管理。本文聚焦于利用Flask框架,结合SQLite数据库和Pillow图像

weixin_33797791的博客 366

Flask框架web开发(黑马程序员版本)学习笔记

初识Flask

zyt131415的博客 6407

Flask备忘录

此文仅仅作为学习本人Flask途中的学习笔记以及备忘录!!!!! 代码格式粘贴复制可能格式出错emm,自己知道就好了!! 无图,慢慢看!!挺枯燥的学习笔记,做个网络备份!!! 目录 一.服务架构: 二.Flask是什么? 01. 微框架 02. 特点 03. 组成 04.常用库: 三.Flask环境搭建: 01.Windows虚拟环境直接上: 02.Conda环境: 03.Linux环境: 四.Flask工程实践: 01.万物之源Hello World: 02.请求处理:

weixin_51334923的博客 2178

Flask框架探索:轻量级与灵活性的完美结合

Flask是一个用Python编写的轻量级Web应用框架,由Armin Ronacher于2010年开发。与Django等重量级框架相比,Flask的核心保持简洁,通过扩展第三方库来实现丰富的功能。Flask的两个核心组件是Werkzeug WSGI工具包和Jinja2模板引擎,这两者为Flask提供了强大的路由和模板渲染能力。

W030321的博客 605

Python全栈数据分析实战:Flask+ECharts构建交互式可视化系统

数据分析与可视化是现代数据驱动决策的核心技术,其原理在于通过算法和工具将原始数据转化为直观的洞察。在工程实践中,Python凭借其丰富的库生态成为主流选择,结合Web框架和可视化库,能够构建端到端的应用系统,极大提升分析结果的可交互性和展示价值。这种技术组合尤其适用于舆情监控、电商评论分析、业务看板等需要实时反馈和动态探索的场景。本文以**Flask**和**ECharts**为核心,通过一个完整的项目案例,系统演示如何将Pandas数据处理、后端API开发与前端交互图表无缝集成,实现从数据到见解的全流程闭

weixin_34080571的博客 469
上一篇: Python Flask 编程 | 连载 03 - Flask 请求
下一篇: Python Flask 编程 | 连载 06 - Jinja2 语法
Llama-Turbo
博客等级 码龄4年 9901粉丝 2024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值