Django笔记-实现用户退出登录(logout)

python实用技巧:Django框架中用户的登录和退出的实现 @本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 这篇文章主要介绍了详解Django框架中用户的登录和退出的实现,Django是重多Python人气框架中最为知名的一个,需要的朋友可以参考下 Django 提供内置的视图(view)函数用于处理登录和退出 (以及其他奇技淫巧),但在开始前,我们来看看如何手工登录和退出。 Django提供两个函数来执行django.contrib.auth\中的动作 : authenticate()和login()。 认证给出的用户名和密码,使用 auth 阅读详情

Django笔记-实现用户的登出

  • Django logout()方法介绍:

    一、登录login(user,request):
    将通过认证的用户的唯一标识信息(主键id),通过哈希加密写入到当前session会话中,退出登录:正好和登录相反(清理session会话信息)

    二、登出logout()方法:
    1.Django用户认证系统提供了logout()方法
    2.封装了清理session的操作,帮助我们快速实现登出一个用户
    3.logout(request)位置:django.contrib.auth.init.py文件中
    4.logout(request)接受一个request参数,从request获取cookie中的名为sessionid的值,通过哈希解密为用户的唯一标识信息(主键id),然后通过id查询数据库中是否有该用户,然后删除redis或者数据库表中的session会话信息,并且删除cookie中sessionid这一项(通过方法request.session.flush())
    5.该函数不会有返回值,如果用户未登录,不会报错(匿名用户)

  • 测试
    1.登录查看cookies和session会话

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2.编写登出视图(登出用户)

    from django.contrib.auth import login, authenticate, logout
    from django.views import View
    from django import http
    class LogoutView(View):
        def get(self, request):
            # 清理session(redis中的会话,请求对象cookie中的sessionid)-request.session.flush()
            logout(request=request)
            response = http.JsonResponse({
                'errmsg': 'ok'
            })
            # 可以删除指定cookie
            # request.session.clear()
            # response.delete_cookie('value')
            return response
    

在这里插入图片描述
在这里插入图片描述

上一篇-自定义用户登录:https://blog.youkuaiyun.com/adminwg/article/details/126185127

Django用户登录验证和自定义验证类 假如,希望在用户登录的时候,可以支持多种方式,比如: 邮箱,手机号等。那就需要对这些字段进行校验,默认的验证类 LoginView 是无法实现的,此时就需要自定义一个验证类。可以在项目 app 的任意一个文件中编写这个类,之后设置一下就可以了。比如在 users 应用下新建一个文件 users_auth.py, 添加如下内容。 阅读详情

相关推荐

Python web全栈开发_Django_billshop 商城项目_首页用户名展示、退出登录、判断用户是否登录、整体QQ登录开发和绑定(文档和准备工作)

1. 首页用户名展示 三个方案 方案一 • 模板中 request 变量直接渲染用户名 • 缺点:不方便做首页静态化 因为静态化 将来访问和刷新速度更快,这个优化必然要做, 所以,不推荐用方案一, 动态化是指访问需要提出请求。 {% if user.is_authenticated %} <div class="login_btn fl"> 欢迎您:{{ user.username }} <span>|

Bill_82的博客 672

Django账号登陆之退出登录(logout()方法介绍、logout()方法使用)

logout()方法介绍 退出登录: a) 回顾登录:将通过认证的用户的唯一标识信息,写入到当前session会话中 b)退出登录:正好和登录相反(清理session会话信息) logout()方法: a) Django用户认证系统提供了logout()方法 b) 封装了清理session的操作,帮助我们快速实现登出一个用户 logout()位置: - django.contrib.auth.__init__.py文件中 logout()方法使用 class LogoutView(View):

yanghao8866的博客 4775

Python Django实践项目--用户登录登出

Python Django实践项目–用户登录登出 python 2.7.10 Django 1.11.25 效果图 实现步骤 创建项目 打开终端,输入 django-admin startproject login 设置语言,时区 进入login/setting.py,修改部分代码 LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai'...

cui134的专栏 1282

【django】用户退出登录功能实现【13】

1、前端逻辑 <div class="top-bar-right"> <ul class="header-user-links"> {% if user.username %} 欢迎您! <span style="font-weight: bolder;">[ {{ user.username }} ]</span> &emsp;<a href="/logout/"&

python全栈 1659

Django框架中用户登录和退出的实现

Django是一种功能强大且广泛使用的Python Web框架,它提供了许多内置的功能来简化Web应用程序的开发。在本文中,我们将详细介绍如何在Django框架中实现用户登录和退出的功能,并提供相应的源代码。通过用户登录,应用程序可以验证用户的身份并提供个性化的功能和内容。在Django中,用户登录的实现主要依赖于Django的内置身份认证系统和相应的视图函数。现在,我们已经完成了在Django框架中实现用户登录和退出的功能。在上面的示例中,我们首先检查是否存在错误消息,如果有,我们将其显示在页面上。

HackNebulaZ的博客 605

Mamba vs YOLO:目标检测选型指南(附实际项目对比)

本文深入对比了Mamba和YOLO在目标检测领域的性能差异与应用场景。通过实际项目数据,分析了两者在城市交通监控、工业质检等场景下的表现,提供了详细的选型指南和部署优化建议,帮助开发者根据实时性、精度等需求选择最适合的解决方案。

weixin_29062255的博客 369

Django博客系统(退出登录)

1. logout()方法介绍 退出登录: 回顾登录:将通过认证的用户的唯一标识信息,写入到当前session会话中 退出登录:正好和登录相反(清理session会话信息) logout()方法: Django用户认证系统提供了logout()方法 封装了清理session的操作,帮助我们快速实现登出一个用户 logout()位置: django.contrib.auth.__init__.py文件中 logout(request) 2. logout

IT之一小佬的博客 1889

论文阅读笔记--Grid Anchor based Image Cropping: A New Benchmark and An Efficient Model

基于网格锚的图片裁剪:一种新的标准和高效的模型摘要1.介绍2.相关工作2.1 图像裁剪数据集和评估指标 摘要 图像裁剪的目的是通过去除图像中无关的内容来改善图像的组成和美学质量。现有的图像裁剪数据库大多只提供一个或多个人工标注的边界框作为基准,难以反映实际中图像裁剪的非唯一性和灵活性。 采用IoU等评价指标也不能可靠地反映裁剪模型的真实性能。本文回顾了图像裁剪的问题,并通过考虑图像裁剪的特殊特性和要求(如局部冗余、内容保存、高宽比),提出了基于网格锚的公式。 我们的公式将候选裁剪窗口的搜索空间从数百万减少到

qq_22565865的博客 2948

python实现用户登录注册退出_详解Django框架中用户的登录和退出的实现

Django 提供内置的视图(view)函数用于处理登录和退出 (以及其他奇技淫巧),但在开始前,我们来看看如何手工登录和退出。 Django提供两个函数来执行django.contrib.auth\中的动作 : authenticate()和login()。认证给出的用户名和密码,使用 authenticate() 函数。它接受两个参数,用户名 username 和 密码 password ,并...

weixin_39789857的博客 594

【AUTOSAR-COM】Transmission Mode 和 Transfer Property

1.COM模块的基本概念 首先在描述Transmission Mode 和 Transfer Property之前,有必要对COM模块的基本处理有一个直观的理解,我所描述的和对概念理解的也不一定完全正确。 Signal:指的是通信协议中的,一条报文中所保存的若干信号。 I-PDU:至少在COM模块中,可以理解为一条报文。 上图是在CANdb软件中编辑一个报文的Layout的界面,可以很形象的将I-PDU对等为这里的一条Message,而Signal就是需要在Message中需要摆放的Signal

tim_hoven的博客 4635

ROS2机械臂MPC轨迹规划实战:从MoveIt 2插件配置到参数调优全流程

本文详细介绍了ROS2机械臂MPC轨迹规划的全流程,从MoveIt 2插件配置到参数调优。通过模型预测控制(MPC)技术,实现高精度运动控制,特别适合复杂装配任务。文章包含环境搭建、插件部署、参数设计及实战调优方法,帮助开发者快速掌握ROS2机械臂的MPC轨迹规划技术。

i0j1k2l3m的博客 207

【超详细实操内容】django的身份验证系统之用户登录与退出

"""退出登录"""logout(request) # 退出登录return redirect('/login/') # 页面重定向到登录页面path('logout/',LogoutView.as_view()) # 退出。

苏婳 1197

Java后端实战:钉钉互动卡片消息从配置到生产级对接

在企业级消息推送场景中,机器人通知已从简单的文本向富交互演进。其核心原理在于通过可交互的卡片模板,将传统单向通知升级为双向、有状态的微型应用界面,实现了用户无需跳转即可完成操作的技术价值。这广泛应用于审批、任务确认、数据填报等需要即时反馈的业务流程。本文聚焦于钉钉平台,深入剖析其互动卡片消息机制,并基于Java后端,系统讲解如何实现包括安全验签、异步回调与卡片动态更新在内的生产级对接方案,涵盖配置管理、服务降级等工程实践关键点,助力构建稳定高效的企业消息交互服务。

weixin_30617737的博客 439

Django项目实战——6—(退出登录、判断用户是否登录、QQ登录、QQ登录工具QQLoginTool、本机绑定域名)

1、退出登录 注册界面跳转到登陆界面:templates/register.html 前端注册界面 {# 跳转到登陆界面 #} <a href="{% url 'users:login' %}">登录</a> logout()方法介绍 退出登录: • 回顾登录:将通过认证的用户的唯一标识信息,写入到当前session会话中 • 退出登录:正好和登录相反(清理session会话信息) logout()方法: • Django用户认证系统提供了

weixin_42118531的博客 1万+

Android 14.0 SystemUI下拉通知栏通知去掉长按事件

在14.0的系统rom产品定制化开发中,在systemui模块中关于下拉状态栏这块也是非常重要的部分,最近在关于systemui下拉通知栏的每条通知部分 要求去掉通知栏通知的长按事件,不需要长按功能,所以就需要分析下关于长按事件是在哪里注册的,然后去掉就可以了,接下来分析实现 相关功能

安卓兼职framework和app工程师的博客 277

Claude Code 100个真实案例 - 用AI搭建GIS地理信息系统(地图标注+热力图)

本案例展示如何使用 Claude Code 从零搭建一个完整的 GIS 地理信息系统。我们将使用 Python + Flask 作为后端,Leaflet.js 作为前端地图引擎,实现地图标注、热力图展示、区域绘制、坐标搜索等功能。全程通过与 Claude Code 对话完成,让你感受 AI 在地理信息领域的强大开发能力。

yueyeguzhuo的专栏 113

Django项目实战-----实现登录验证、多用户登录和退出逻辑

目录登录逻辑登录逻辑图解用户登录逻辑流程登录逻辑视图内代码多用户登录(判断是用手机号登录还是用户名登录)退出逻辑退出逻辑流程退出登录视图内代码 登录逻辑 登录逻辑图解 用户登录逻辑流程 提取前端的数据 ① 用户输入的用户名 ② 用户输入的密码 ③用户是否勾选记住密码 验证参数 ① 判断参数是否全部都有 ② 验证用户用户名和密码是否正确 保持登录状态 处理记住密码 ① 如果勾选了记住密码就设置session有效期,看需求要记住多长时间 ② 如果没有勾选就设置session有效期为0,关闭浏览器就会自动删

bjsyc123456的博客 1449

SAP-ABAP:BAPI_INSPOPER_RECORDRESULTS 记录检验操作结果更新检验批状态详细解析

SAP-ABAP:BAPI_INSPOPER_RECORDRESULTS 记录检验操作结果更新检验批状态详细解析

baidu_35680696的博客 971

android studio 用户退出登录_Django-7 用户登录退出及个人资料功能

今天把之前关于博客中用户的登录和退出功能完善,以及对用户的个人资料功能的添加,验证菜单只有用户登录的情况下才能访问等,接下来开始:首先修改django_projectdjango_projecturls.py,添加个人信息、登录、退出三个url转发规则:在django_project甥敳獲emplates甥敳獲下新建login.html登录页面:在django_project甥敳獲emplates...

weixin_33258874的博客 498

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

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

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

python django用户登录系统_详解Django框架中用户的登录和退出的实现

Django 提供内置的视图(view)函数用于处理登录和退出 (以及其他奇技淫巧),但在开始前,我们来看看如何手工登录和退出。 Django提供两个函数来执行django.contrib.auth\中的动作 : authenticate()和login()。认证给出的用户名和密码,使用 authenticate() 函数。它接受两个参数,用户名 username 和 密码 password ,并...

weixin_39721953的博客 502

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Django内置登录退出

本来想用内置的登录退出功能,结果遇到一个坑爹问题,耗掉了不少时间,还不如自己简单弄一弄。 简单说下登录退出过程 导入内置模块 from django.contrib.auth import authenticate, login, logout from django.contrib.auth.decorators import login_required 登录方法,官网都有...

weixin_34198881的博客 345

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

django 用户登录、退出demo

实现一个具体的功能Demo——登录、退出。当然,其实除了登录还有很多东西。这里只是把系统登录退出部分功能拆解下来。 在login的templates目录下创建两个模板,分别是login.html和index.html,当用户未登录时,跳转到login.html页面,登陆成功或者登录状态,跳转到index.html。   url的配置内容如下: from django.conf.urls ...

u012762054的博客 1177

python用户名密码登录退出_详解Django框架中用户的登录和退出的实现

Django 提供内置的视图(view)函数用于处理登录和退出 (以及其他奇技淫巧),但在开始前,我们来看看如何手工登录和退出。 Django提供两个函数来执行django.contrib.auth\中的动作 : authenticate()和login()。认证给出的用户名和密码,使用 authenticate() 函数。它接受两个参数,用户名 username 和 密码 password ,并...

weixin_39540178的博客 226

php实现用户登录和退出,详解Django框架中用户的登录和退出的实现

from django.contrib import authdef login_view(request):username = request.POST.get('username', '')password = request.POST.get('password', '')user = auth.authenticate(username=username, password=passwo...

weixin_30227775的博客 234

django 实现同步登登录和退出

步骤二:判断认证后的用户是否为None。使用logout函数退出当前登录的用户。用户不为None则表示用户认证通过。步骤三:调用login函数登录用户。模板中用户信息html。表单forms.py。视图views.py。

sumatray的博客 954
上一篇: Django笔记-Django自定义用户验证实现用户登录
下一篇: Django笔记-详解判断用户是否登录的几种方式(is_authenticated,LoginRequired Mixin,login_required )
simpleyako
博客等级 码龄8年 26粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值