基于C#开发web网页管理系统模板流程-主界面管理员录入和编辑功能完善
前言
紧接上篇->基于C#开发web网页管理系统模板流程-登录界面和主界面_c#的网页编程-CSDN博客
已经完成了登录界面和主界面,本篇将完善主界面的管理员录入和编辑功能,事实上管理员录入和编辑的设计套路适用于所有静态表的录入和编辑
首先还是介绍一下本项目将要实现的功能
(一)管理员-录入
点击菜单中的管理员-录入,网页给出输入信息的界面,用户输入完信息后判断其合法性
如果不合法提示重新输入,合法则保留信息到本地数据库
(二)管理员--编辑
一,新建gly文件夹
在admin文件下再新建一个gly文件夹以方便脚本管理,我们将把实现管理员录入和编辑功能的脚本放在这个文件夹下,以此类推,当你实现菜单的其它选项的功能时,也应采用这个思路
二,设计管理员-录入界面
(注:部分操作与上一篇的基本雷同,因此省去不必要的图片操作,自行根据文字提示完成操作)
(一)添加设计工作台
在gly文件下【右键】->【添加新建项】创建一个【包含母版页的Web窗体】,将其命名为glyadd.aspx
点击添加后再弹出的【选择母版页】窗口中选择唯一一个母版页Site.Master
(二)插入与调整表格
在刚刚新建的文件中点击右下角的【设计】,在紫色窗口中键入几个回车方便操作
顶部点击【表】->插入表格
重点!该表格的列数为2,行数=你数据库中管理员表的字段数+2
例如:我的管理员表有6个字段,因此设置该表为8(6+2)行
(三)修改表格背景色
这一步在上一篇的标题【三.(一).(3)】已经详细讲过,要重点注意的问题还是表格的选中问题(要点一下表头才能全选表格,而不是只选中表格中的4行,两者是有区别的!如果全选表格的话表的边框会加粗、而且右边的属性栏会有【TABLE】的标签而不是【TD】之类的标签,如果不正确的全选表格,对表格的一些整体操作会只作用于部分单元格从而导致最终显示结果乱版)
确认全选表格后,右边下滑找到【style】属性(如果右边没有属性窗口,对表格右键可以找到),点击该属性右边的三个小点,会弹出修改样式窗口,点击【背景】,在【background-color】中选择想要的背景色,点击确定,表格颜色成功修改
(四)添加提示用户输入的信息
本步操作就是美化以下录入界面,给用户提示在哪里输入信息,合并单元格、居中、放大字体、加粗字体等操作不再赘述,顺便调整一下表格的大小
读者在设计时应符合自己对用户的预期输入,并贴合数据库中字段需要录入的数据
(五)添加控件
给表格右边添加相应的文本框等录入控件,这样才能接收用户的输入
我们需要用到如下图红框中的这三个控件
(工具箱点左边的【工具箱】按钮展开)
这里我添加了5个【TextBox】、2个【RadioButton】、2个【Button】等控件,读者请根据实际需要添加合适的控件
(1)性别单选按钮
这里重点解释一下【RadioButton】的作用,因为需要录入性别信息,性别只有两种选择,【RadioButton】则能实现这一操作
点击控件后在属性栏中的【Text】修改他们的名字分别为男、女,再将这两个按钮的属性中的【GroupName】修改为同一名字,确保两个按钮在同一分组(这样才能实现非男即女的按钮单选)
(2)日历输入生日
然后再解释一下怎么设计成以日历的形式让用户快速输入日期信息
单击输入日期的文本框控件,在属性中找到【TextMode】属性,修改为【Date】,如果你需要用户的输入精确到时分秒,也可以修改为【DateTime】
(3)两个按钮改名
改一下两个【Button】控件的名字,方便用户明白它们的功能,也是在属性栏中的【Text】修改
(4)为录入按钮和重置按钮添加脚本以实现其功能
双击录入按钮,将下面的脚本复制到弹出的文件【glyadd.aspx.cs】中并【Ctrl+S】快捷键保存,脚本的功能已经在注释中做出了详细解释,请仔细查看!
(注:这整个脚本包含录入和重置这两个按钮的脚本)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Odbc; //ODBC命名空间namespace ckgl.admin.gly
{public partial class glyadd : System.Web.UI.Page{protected void Button1_Click(object sender, EventArgs e)//录入按钮脚本{//根据你实际的设计进行对应的输入内容合法判断if (TextBox1.Text == "" || TextBox2.Text == ""){Response.Write("<script language=javascript> alert('管理员编号或密码不得为空!');</script>");return;}if (TextBox3.Text == ""){Response.Write("<script language=javascript> alert('管理员姓名不得为空!');</script>");return;}if (RadioButton1.Checked == false && RadioButton2.Checked == false){Response.Write("<script language=javascript> alert('请选择管理员性别!');</script>");return;}if (TextBox4.Text == "" || TextBox5.Text == ""){Response.Write("<script language=javascript> alert('管理员生日或电话不得为空!');</script>");return;}if (TextBox1.Text.Length != 6){Response.Write("<script language=javascript> alert('管理员编号为六位长度!');</script>");return;}//创建连接对象、打开数据库OdbcConnection con = DB.Lianjie();con.Open();//编写sql语句,查询重复的管理员编号string sql1 = " select * from glyb where gno='" + TextBox1.Text + "' ";OdbcCommand mycommand1 = new OdbcCommand(sql1, con);OdbcDataReader sdr = mycommand1.ExecuteReader();if (sdr.Read())//如果有重复,给出提示信息{Response.Write("<script language=javascript> alert('管理员编号已存在,请更换!');</script>");return;}//管理员录入,对于性别信息需要特殊处理成男、女文本string xb = "";if (RadioButton1.Checked == true)xb = "男";if (RadioButton2.Checked == true)xb = "女";string sql2 = " insert into glyb values('" + TextBox1.Text + "', '" + TextBox2.Text + "' , '" + TextBox3.Text + "','" + xb + "', ";sql2 += " '" + TextBox4.Text + "','" + TextBox5.Text + "') ";OdbcCommand mycommand2 = new OdbcCommand(sql2, con);// Response.Write(sql2);//调试用,正常不用这两行// return;mycommand2.ExecuteNonQuery(); //用于录入,修改,删除时Response.Write("<script language=javascript> alert('录入成功!');</script>");con.Close(); //关闭数据库}protected void Button2_Click(object sender, EventArgs e)//重置按钮脚本{//重置的思想很简单,直接把所有文本框置为空字符串,所有选择按钮置为false(即未选状态)//我这里有5个文本框,依次置空TextBox1.Text = TextBox2.Text = TextBox3.Text = TextBox4.Text = TextBox5.Text = "";//两个选择性别的按钮,置为falseRadioButton1.Checked = RadioButton2.Checked = false;}}
}
三,设计管理员-编辑界面
(一)添加设计工作台
在gly文件下【右键】->【添加新建项】创建一个【包含母版页的Web窗体】,将其命名为glyedit.aspx
点击添加后再弹出的【选择母版页】窗口中选择唯一一个母版页Site.Master
(二)插入与调整表格
管理员编辑界面的表格的列数固定为3,行数需要根据你自己管理系统需要查询的字段数来决定,行数=你需要查询的字段数+2
例如:在我的管理员表中,我需要查询的字段只有编号、姓名、电话这三个(其它字段基本没有查询的必要,密码不能展示给其它用户、性别要么查男要么查女,查出来很多记录没有意义,生日也属于隐私没必要查,总之根据你自己需要用户能够查询到的字段来设计即可)
因此设置该表为5(3+2)行
(三)修改表格背景色
(四)添加提示用户输入的信息
(五)添加控件
以上这四块内容基本是重复的套路操作,因此省去大量篇幅(如果忘了操作则重看本篇标题【二】的(2)(3)(4)(5),都是一样的套路),自由发挥设计即可,参考下图
完成以上操作之后,我们还要在上图绿框部分的大单元格处添加一个用于显示数据的控件,点击选中它之后,在【工具箱】->【数据】中找到【GridView】,双击后添加
(六)配置odbc数据源
本步操作用于管理系统能够连接到数据源从而显示查询结果,已经在上一篇(基于C#开发web网页管理系统模板流程-登录界面和主界面-CSDN博客)的标题【一.(三).(2)】处做过详细演示,如果你还没建立odbc数据源连接,请自行跳转查看教程
按下图操作,点击【<新建数据源>】
按如下图操作创建数据源
点完确定后回到这个窗口,点【下一步】,下一个窗口(这个窗口的截图我省略了)再点下一步
配置Select语句,在这里选择你数据库中的管理员表
(注:如果在本步操作你无法选择【指定来自表或视图的列】这个选项,从而导致你无法选择你的管理员表,错误原因在于你创建的odbc数据源未指定你的数据库),即下图绿框部分中红字特地强调的内容你没有做,此时你必须重新创建数据源
严格按照 上一篇(基于C#开发web网页管理系统模板流程-登录界面和主界面-CSDN博客)的标题【一.(三).(2)】所说的做,且新的数据源不能和原来错误的数据源同名(除非你删除原来错误的数据源,但如果你是5.1版本的odbc可能会发现删除不了,如果你想删除参考本篇->odbc用户dsn点删除点配置没反应个人解决经验-CSDN博客)
然后选【指定自定义SQL语句或存储过程(S)】再点下一步
接下来我们要创建SELECT、UPDATE、DELETE这三部分的SQL语句
SELECT的SQL语句就是【select * from 管理员表名】这样的形式
UPDATE的SQL语句是【update 管理员表名 set 字段1=? ,字段2=?,字段3=?,... where 管理员编号字段=?】的形式
DELETE的SQL语句是【delete from 管理员表名 where 管理员编号字段=?】
你需要确认自己管理员表名及其中的字段来对这3条语句进行适当修改,很简单的(但要求你仔细确认字段名是否正确,否则会导致后续的查询bug),你看看就知道了,参考下图
做完三条SQL编写的工作后,继续点下一步,在这个【测试查询】的窗口中也可以点测试查询(T)验证一下SELECT语句(其它更新、删除语句无法在此处验证),确认无误后点完成(实在后期遇到bug也没多大关系,可以修改配置的)
此时可以发现管理员表中的字段已经被绑定到控件中了
(七)设计编辑和删除功能
展开控件菜单,将【启用分页】、【启用编辑】、【启用删除】勾选上,此时可能需要你调整一下表格大小以适应这些内容
(1)设置分页
选中GridView控件后在属性栏中的【PageSize】处可以修改每页显示的记录数,可以根据自己设计需求进行设置
(2)将编辑、删除功能置于查询结果后方
一般来说习惯将编辑、删除功能置于查询结果后方,当然这也根据你自己喜好去设置
但是将【CommandField】列设置为TemplateField(模板列)是必须进行的操作!这关系到下文设置删除提示的操作!
(3)编辑和删除功能测试
在编辑界面直接运行,我们来测试一下编辑和删除功能,这一步可能产生的bug会非常多,博主也是被硬控了一天半多的时间
运行来到编辑界面,这里我随便准备了4条数据
点击第四条数据的删除,成功删除
点击第一条的编辑功能,修改其gname的值
点更新,成功修改
读者需要确保自己的编辑和删除功能能够实现上文所描述的,如果无法实现,提供以下可能的处理措施——
①检查自己在本篇标题【三.(6)】编写的三条SQL语句是否正确(语法、字段名、关键字之间是否空格隔开等)
②点击删除功能时弹出如下错误
解决方法是:再点开配置数据源,在【配置Select语句】的窗口选择【高级】,将【使用开放式开发(O)】这个选项勾选,最后点确定
(注:最好再去检查一下那三条自定义SQL语句是否错误,有可能会被系统修改成默认值,需要你手动再改回来)
③点击编辑功能,修改值后点更新,但是数据没有被修改
解决方法是:点击【编辑列】,确认你的【管理员编号】(这里我是gno)字段的属性【ReadOnly】是否为True,因为前文已经说过这个字段是不能被更改的,所以要设置为只可读
(补充必看)(4)给删除功能添加确认删除提示
为避免用户误删记录,必须给删除功能添加对应的确认提示
点击右下角的【源】,在模板列的后台代码(即绿色框起来的部分,如果没有绿框内的代码,说明你为进行本篇标题【三.(7).2】处内容的操作)中找到如下图红色下划线所在行的删除按钮后台代码,添加如红色下划线所示的代码在【Text="删除"】的后面
OnClientClick="return confirm('真的要删除吗?')"
测试功能:
做完修改后注意保存,运行后来到管理员编辑界面,对任意一条记录进行删除操作,出现如下确认删除的提示,证明功能无误
(5)为录入按钮和重置按钮添加脚本以实现其功能
双击录入按钮,将下面的脚本复制到弹出的文件【glyedit.aspx.cs】中并【Ctrl+S】快捷键保存,脚本的功能已经在注释中做出了详细解释,请仔细查看!
(注:这整个脚本包含录入和重置这两个按钮的脚本)
using System;
using System.Collections.Generic;
using System.Data.Odbc;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace ckgl.admin.gly
{public partial class glyedit : System.Web.UI.Page{protected void Button1_Click(object sender, EventArgs e){OdbcConnection con = DB.Lianjie();con.Open();string sql = " select * from glyb where ";if (TextBox1.Text != "")sql += " gno='" + TextBox1.Text + "' and ";if (TextBox2.Text != "")sql += " gname='" + TextBox2.Text + "' and ";if (TextBox3.Text != "")sql += " gtele='" + TextBox3.Text + "' and ";sql += " '1'='1' "; //复合查询关口语句,这样的设计代码的思路是:如果三个文本框都为空,即用户未输入任何匹配信息,那么查询结果就是所有记录OdbcCommand mycommand1 = new OdbcCommand(sql, con);OdbcDataReader sdr = mycommand1.ExecuteReader();if (sdr.Read()){SqlDataSource1.SelectCommand = sql;GridView1.DataBind(); //刷新查询窗口,刷新才能显示查询结果}else{Response.Write("<script language=javascript> alert('查无此人!');</script>");return;}con.Close();}protected void Button2_Click(object sender, EventArgs e){//重置的思想很简单,直接把所有文本框置为空字符串//我这里有3个文本框,依次置空TextBox1.Text = TextBox2.Text = TextBox3.Text = "";}}
}
四,添加菜单
我们先找到上一篇的标题【三.(二).(4)】处(如下图)创立的主菜单(即母版页Site1.Master),当时我们只是草率的创立了几个新节点,出了【退出】这个选项的功能,其它菜单还没有完善
在项目中找到之前创建在admin文件夹下的Site.Master这个母版页
右键点击这个菜单栏->【编辑节点】,给它的子节点命名成几个有意义的菜单选项名,比如本篇我们是实现管理员的录入和编辑功能,因此将第一个节点命名成【管理员】,然后给该节点添加两个子节点,分别命名为【录入】和【编辑】,两个平行关系子节点的创建不好描述,但你试试就知道很简单的
但是仅是修改它的文本可做不到对应的跳转到录入页面的功能,我们需要实现的功能是点击录入后就跳转到录入页面,需要做的是修改【NavigateUrl】的值
同理,点击编辑就跳转到编辑页面,也是修改【NavigateUrl】的值
菜单效果效果如下,至于其它节点的名称和关系,则根据读者自己的管理系统来进行设计
五,测试
建议从登录窗口开始完整测试一遍,这里为了节省篇幅就直接从管理员功能的界面开始测试
(一)录入界面功能测试
(1)空输入拦截测试
读者自行测试所有信息的空输入拦截
(2)管理员编号长度合法性测试
因为前面的脚本有规定管理员的编号长度固定为6,因此此处进行测试
(3)重置输入测试
点击重置,应该把输入的信息清空
(二)编辑界面功能测试
(1)查询测试
匹配信息全为空时,查询结果为所有记录
编号匹配测试
姓名匹配测试
电话匹配测试
无记录查询测试
(2)重置输入测试
(3)编辑与删除测试
先故意录入一条测试用的记录
删除记录测试
编辑记录测试
相关文章:

基于C#开发web网页管理系统模板流程-主界面管理员录入和编辑功能完善
前言 紧接上篇->基于C#开发web网页管理系统模板流程-登录界面和主界面_c#的网页编程-CSDN博客 已经完成了登录界面和主界面,本篇将完善主界面的管理员录入和编辑功能,事实上管理员录入和编辑的设计套路适用于所有静态表的录入和编辑 首先还是介绍一下…...

K8s证书过期处理
问题描述 本地有一个1master2worker的k8s集群,今天启动VMware虚拟机之后发现api-server没有起来,docker一直退出,这个集群是使用kubeadm安装的。 于是kubectl logs查看了日志,发现证书过期了 解决方案: 查看证书 #…...

刷题之路径总和Ⅲ(leetcode)
路径总和Ⅲ 这题和和《为K的数组》思路一致,也是用前缀表。 代码调试过,所以还加一部分用前序遍历数组和中序遍历数组构造二叉树的代码。 #include<vector> #include<unordered_map> #include<iostream> using namespace std; //Def…...
MongoDB 原子操作:确保数据一致性和完整性的关键
在 MongoDB 中,原子操作是指可以一次性、不可分割地执行的数据库操作。这些操作能够保证在多个并发操作中不会出现数据不一致或者丢失的情况,确保数据库的数据完整性和一致性。 基本语法 MongoDB 的原子操作通常与更新操作相关,其基本语法如…...
2024上半年软考高级系统架构设计师回顾
本博客地址:https://security.blog.csdn.net/article/details/139238685 2024年上半年软考在5月25-26日举行,趁着时间刚过去记忆还在,简单写一点总结。 关于考试形式:上机考试(以后也都是机考)࿰…...
SQL注入绕过技术深度解析与防御策略
引言 在Web安全领域,SQL注入攻击一直是一个棘手的问题。攻击者通过SQL注入手段获取敏感数据、执行恶意操作,甚至完全控制系统。尽管许多防御措施已被广泛采用,但攻击者仍不断开发新的绕过技术。本文将深度解析SQL注入的绕过技术,…...
Redis教程(十六):Redis的缓存穿透、缓存击穿、缓存雪崩
传送门:Redis教程汇总篇,让你从入门到精通 缓存穿透 描述 用户需要查询一个数据,例如要查一张ASSET_CODE 999999的卡片,查询redis中没有,就直接去请求数据库,数据库中也不存在对应的数据,返回…...
如何实现一个高效的单向链表逆序输出?
实现单向链表逆序输出的关键点有两个: 反转链表本身 遍历反转后的链表并输出首先,我们来看如何反转链表: class Node:def __init__(self, data):self.data dataself.next Nonedef reverse_list(head):"""反转单向链表"""prev Nonecurrent h…...
使用 Go 实现 HelloWorld 程序,并分析其结构
在学习任何新的编程语言时,编写一个 “Hello, World” 程序通常是最初的入门步骤。这不仅是一个传统,也是一种快速了解语言基本语法和运行机制的有效方法。对于 Go 语言,这个过程不仅可以帮助新手快速入门,还提供了一个窗口&#…...
机器学习:在Python中sklearn库的使用,纯干货!12个小时的整理!
无监督学习是在没有标签的数据上训练的。其主要目的可能包括聚类、降维、生成模型等。 以下是 6 个重要的无监督学习算法,这些算法都可以通过使用sklearn(Scikit-learn)库在Python中很好地处理: 目录 K-Means 聚类 层次聚类 …...
XSS 攻击
XSS 攻击简介 定义: XSS(跨站脚本攻击)是一种网络安全漏洞,攻击者通过在 Web 页面中注入恶意代码,利用用户的浏览器执行这些恶意脚本,从而实施攻击。 解决方案: 过滤用户输入: 对…...
.Net Core 中间件与过滤器
过滤器这个是.Net MVC旧有的功能,中间件这个概念是新出的, ASP.NET Core只是完成了HTTP请求调度、报文解析等必要的工作,像检查用户身份、设置缓存报文头等操作都是在中间件中完成,中间件就是ASP.NET Core的一个组件,…...
【ARMv7-A】——WFI(wait for interrupt)
文章目录 WFI基本原理使用场景多任务模型注意事项代码实例linux 内核中的 WFI 指令不使用 WFI 指令测试使用 WFI 指令测试WFI WFI 即 Wait for interrupt,常用于低功耗。 WFI (Wait for interrupt) 和 WFE (Wait for event) 是两个让 ARM 核进入 low-power standby 模式的指…...

92. 反转链表 II
题目描述 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left < right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 示例 1: 输入:head [1,2,3,4,5], left 2, right 4 输出&#…...

Modbus工业网关
随着工业自动化程度的不断提高,设备之间的数据通信与交互变得至关重要。在这一背景下,Modbus协议凭借其简单、可靠、开放的特点,成为了工业自动化领域中最常用的通信协议之一。而HiWoo Box网关作为一款支持Modbus协议的工业网关设备ÿ…...

c++——模板初始识
1.函数模板 我们经常用到Swap函数交换两个值。由于需要交换的数据的类型不同,我们就需要写不同参数类型的同名函数,也就是函数重载: 然而这三个函数的逻辑是一样的,写这么多有些多此一举,通过函数模版可以写一个通用…...

帆软生成csv文件
帆软官网提供了导出csv文件的插件,需要下载指定版本的插件 请选择具体的详情点击官网介绍:文档介绍 插件地址:插件地址...

12.Redis之补充类型渐进式遍历
1.stream 官方文档的意思, 就是 stream 类型就可以用来模拟实现这种事件传播的机制~~stream 就是一个队列(阻塞队列)redis 作为一个消息队列的重要支撑属于是 List blpop/brpop 升级版本.用于做消息队列 2.geospatial 用来存储坐标 (经纬度)存储一些点之后,就可以让用户给定…...

品牌做电商控价的原因
品牌控价确实是一项至关重要的任务,它关乎着品牌形象、市场定位以及长期发展的稳定性。在电商平台上,价格的公开性和透明度使得消费者、经销商和其他渠道参与方都能够轻易地进行价格比较。因此,品牌方必须对电商渠道的价格进行严格的管控&…...
安全面试中的一个基础问题:你如何在数据库中存储密码?
3分钟讲解。 上周的面试故事 职位:初级安全工程师,刚毕业。 开始面试。 我:“这里你提到对数据安全有很好的理解。你能举例说明哪些方面的数据安全吗?” A:“当然。例如,当我们构建一个系统时,会…...
Q1起重机指挥理论备考要点分析
Q1起重机指挥理论备考要点分析 一、考试重点内容概述 Q1起重机指挥理论考试主要包含三大核心模块:安全技术知识(占40%)、指挥信号规范(占30%)和法规标准(占30%)。考试采用百分制,8…...
Linux--vsFTP配置篇
一、vsFTP 简介 vsftpd(Very Secure FTP Daemon)是 Linux 下常用的 FTP 服务程序,具有安全性高、效率高和稳定性好等特点。支持匿名访问、本地用户登录、虚拟用户等多种认证方式,并可灵活控制权限。 二、安装与启动 1. 检查是否已…...
Amazon RDS on AWS Outposts:解锁本地化云数据库的混合云新体验
在混合云架构成为企业数字化转型标配的今天,如何在本地数据中心享受云数据库的强大能力,同时满足数据本地化、低延迟访问的严苛需求?Amazon RDS on AWS Outposts 给出了完美答案——将AWS完全托管的云数据库服务无缝延伸至您的机房࿰…...

《架构即未来》笔记
思维导图 第一部分:可扩展性组织的人员配置 第二部分:构建可扩展的过程 第三部分:可扩展的架构方案 第四部分:其他的问题和挑战 资料 问软件工程研究所: https://www.sei.cmu.edu/ AKF公司博客: http://www.akfpart…...

【web笔记】JavaScript实现有动画效果的进度条
文章目录 1 实现效果2 实现代码 1 实现效果 2 实现代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"utf-8"><style>#progress {width: 300px;height: 20px;border-radius: 0; /* 移除圆角 */-webkit-appearance…...
Life:Internship finding
1. 前言 fishwheel writes this Blog to 记录自分自身在研二下找实习的经历。When 写这篇 Blog 的时候我的最后一搏也挂掉了,只能启用保底方案了。When I 打开我的邮箱时,发现里面有 nearly 100 多封与之相关的邮件,顿时感到有些心凉&#x…...

【Mac 从 0 到 1 保姆级配置教程 16】- Docker 快速安装配置、常用命令以及实际项目演示
文章目录 前言1. Docker 是什么?2. 为什么要使用 Docker? 安装 Docker1. 安装 Docker Desktop2. 安装 OrbStack3. Docker Desktop VS OrbStack5. 验证安装 使用 Docker 运行项目1. 克隆项目到本地2. 进入项目目录3. 启动容器: 查看运行效果1. OrbStack 中…...
【鸿蒙在 ETS (Extendable TypeScript) 中创建多级目录或文件,可以使用鸿蒙的文件系统 API】
鸿蒙在 ETS (Extendable TypeScript) 中创建多级目录或文件,可以使用鸿蒙的文件系统 API。 // 导入需要的模块 import fs from ohos.file.fs;const TAG"Index" Entry Component struct Index {State message: string Hello World;build() {Row() {Colum…...

免费工具-微软Bing Video Creator
目录 引言 一、揭秘Bing Video Creator 二、轻松上手:三步玩转Bing Video Creator 2.1 获取与访问: 2.2 创作流程: 2.3 提示词撰写技巧——释放AI的想象力: 三、核心特性详解:灵活满足多样化需求 3.1 双重使用模…...
网站静态文件加速-Django项目静态文件存储到腾讯云COS存储提升网络请求速度
解决办法是通过在 Nginx 中把对 /static/ 路径的请求直接指向你的 COS 域名来实现让浏览器直接去拉取 COS 上的静态资源,而不再经过本地服务器。下面给出两种常见的做法,你可以任选其一: 方法一:使用 301/302 Redirect ࿰…...