当前位置: 首页 > news >正文

【web开发】9、Django(4)ajax请求

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、Ajax是什么?
  • 二、使用步骤
  • 二、订单管理


提示:以下是本篇文章正文内容,下面案例可供参考

一、Ajax是什么?

Ajax(Asynchronous JavaScript and XML)是一种用于在不重新加载整个网页的情况下向服务器发送请求并接收响应的技术。它通过 JavaScript 来实现异步通信,允许你在网页上动态地加载数据、更新内容和与服务器交互,从而提升用户体验。

二、使用步骤

功能介绍
GET\POST以URL和表单的形式向浏览器发送请求并提交(页面会刷新)。
除此之外,也可以基于Ajax向后台发送请求(偷偷的发送请求)。

  • 依赖jQuery
  • 编写ajax代码
import json
from django.shortcuts import render
from django.http import HttpResponsefrom app01 import models
from app01.utils.pagination import Pagination
from app01.utils.form import TaskModelForm
from django.views.decorators.csrf import csrf_exempt
from app01.utils.bootstrap import BootstrapModelFormclass TaskModelForm(BootstrapModelForm):class Meta:model = models.Taskfields = "__all__"widgets = {"detail": forms.TextInput}def task_list(request):"""任务列表"""# 去数据库获取数据queryset = models.Task.objects.all()page_object = Pagination(request, queryset, page_size=2)form = TaskModelForm()context = {"form": form,"page_string": page_object.html(),  # 生成页码"queryset": page_object.page_queryset,}return render(request, "task_list.html", context)@csrf_exempt
def task_ajax(request):print(request.GET)print(request.POST)data_dict = {"status": True, 'data': [11, 22, 33, 44]}return HttpResponse(json.dumps(data_dict))@csrf_exempt
def task_add(request):print(request.POST)# 1.用户输入数据进行校验(modelForm校验)form = TaskModelForm(data=request.POST)if form.is_valid():form.save()data_dict = {"status": True}return HttpResponse(json.dumps(data_dict))data_dict = {"status": False, 'error': form.errors}return HttpResponse(json.dumps(data_dict, ensure_ascii=False))
{% extends 'layout.html' %}{% block content %}<div class="container"><div class="panel panel-default"><div class="panel-heading">表单</div><div class="panel-body"><form id="formAdd"><div class="clearfix">{% for field in form %}<div class="col-xs-6"><div class="form-group,col-ms-2" style="margin-bottom: 20px ;position:relative;">{#                            <div class="form-control">#}<label>{{ field.label }}</label>{{ field }}<span class="error-msg" style="color: red;position: absolute"></span></div></div>{% endfor %}<div class="col-xs-12"><button id="btnAdd1" type="button" class="btn btn-primary  ">提 交</button></div></div></form></div></div><div class="panel panel-default" style="margin-top: 20px;"><!-- Default panel contents --><div class="panel-heading"><div><span class="glyphicon glyphicon-th-list" aria-hidden="true"> 任务列表 </span></div></div><!-- Table --><table class="table"><thead><tr><th>id</th><th>标题</th><th>级别</th><th>负责人</th><th>操作</th></tr></thead><tbody>{% for obj in queryset %}<tr><th>{{ obj.id }}</th><td>{{ obj.title }}</td><td>{{ obj.get_level_display }}</td><td>{{ obj.user_id }}</td><td><a href="#" class="btn btn-primary btn-xs ">编辑</a><a href="#" class="btn btn-danger btn-xs ">删除</a></td></tr>{% endfor %}</tbody></table></div><ul class="pagination">{{ page_string }}</ul><div style="height: 1000px"></div><hr/><h2>实例1</h2><input type="text" id="txtUser" placeholder="姓名"><input type="text" id="txtAge" placeholder="年龄"><input type="button" id="btn1" value="提交"></div>{% endblock %}{% block js %}<script type="text/javascript">$(function () {{#            页面加载完就自动执行#}bindBtnAdd1Event();bindBtn1Event();})function bindBtnAdd1Event() {$("#btnAdd1").click(function () {$(".error-msg").empty();$.ajax({url: '/task/add/',type: "post",data: $("#formAdd").serialize(),dataType: "JSON",success: function (res) {if (res.status) {alert("添加成功");{#添加自动刷新#}location.reload();} else {$.each(res.error, function (name, data) {console.log(name, data)$("#id_" + name).next().text(data[0]);})}}})})}function bindBtn1Event() {$("#btn1").click(function () {$.ajax({url: '/task/add/',type: "post",data: {user: $("#txtUser").val(),age: $("#txtAge").val()},dataType: "JSON",success: function (res) {console.log(res);console.log(res.status);console.log(res.data);}})})}</script>
{% endblock %}

二、订单管理

注意:
< input id=“btnAdd” type=“button” value=“新建订单2” class=“btn btn-success”>
< div class=“clearfix”>:清除浮动
< button id=“btnSave” type=“button” class=“btn btn-primary”>保 存</ button>

#order_list.html
{% extends 'layout.html' %}{% block content %}<div class="container"><div>
{#          <input type="button" value="新建订单1" class="btn btn-primary" data-toggle="modal" data-target="#myModal">#}<input id="btnAdd" type="button" value="新建订单2" class="btn btn-success"></div><div class="panel panel-default" style="margin-top: 20px;"><!-- Default panel contents --><div class="panel-heading"><div><span class="glyphicon glyphicon-th-list" aria-hidden="true"> 订单列表 </span></div></div><!-- Table --><table class="table"><thead><tr><th>id</th><th>订单号</th><th>名称</th><th>价格</th><th>状态</th><th>负责人</th><th>操作</th></tr></thead><tbody>{% for obj in queryset %}<tr><th>{{ obj.id }}</th><td>{{ obj.oid }}</td><td>{{ obj.title }}</td><td>{{ obj.price }}</td><td>{{ obj.get_status_display }}</td><td>{{ obj.admin.username }}</td><td><input uid="{{ obj.id }}" type="button" class="btn btn-primary btn-xs btn-edit" value="编 辑"><input uid="{{ obj.id }}" class="btn btn-danger btn-xs btn-delete" type="button"value="删 除"></td></tr>{% endfor %}</tbody></table></div><ul class="pagination">{{ page_string }}</ul></div>{#新建/编辑对话框#}<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><spanaria-hidden="true">&times;</span></button><h4 class="modal-title" id="myModalLabel">新建</h4></div><div class="modal-body"><form id="formSave"><div class="clearfix">{% for field in form %}<div class="col-xs-6"><div class="form-group,col-ms-2"style="margin-bottom: 20px ;position:relative;">{#                            <div class="form-control">#}<label>{{ field.label }}</label>{{ field }}<span class="error-msg" style="color: red;position: absolute"></span></div></div>{% endfor %}</div></form></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">取 消</button><button id="btnSave" type="button" class="btn btn-primary">保 存</button></div></div></div></div>{#删除对话框#}<div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="deleteModalLabel"><div class="modal-dialog" role="document"><div class="alert alert-danger alert-dismissible fade in" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><spanaria-hidden="true">×</span></button><h4>是否删除?</h4><p style="margin:10px 0px;">确定删除后,选取数据所有相关的数据都会被删除</p><p style="text-align: right ;"><button id="btnConfirmDelete" type="button" class="btn btn-danger">确 定</button><button type="button" class="btn btn-default" data-dismiss="modal">取 消</button></p></div></div></div>{#删除对话框#}{% endblock %}{% block js %}<script type="text/javascript">var DELETE_IDvar EDIT_ID$(function () {bindBtnAddEvent();bindBtnSaveEvent();bindBtnDeleteEvent();bindBtnConfirmDeleteEvent();bindBtnEditEvent();})function bindBtnAddEvent() {$('#btnAdd').click(function () {{#将正在编辑的ID设置为空#}EDIT_ID = undefined;{#清空对话框中的数据#}$("#formSave")[0].reset();$("#myModalLabel").text("新建")$('#myModal').modal('show')});}function bindBtnSaveEvent() {$("#btnSave").click(function () {{#清除错误信息#}$(".error-msg").empty();if (EDIT_ID) {//编辑doEdit();} else {//添加doAdd();}function doEdit() {$.ajax({url: '/order/edit/' + "?uid=" + EDIT_ID,type: "post",data: $("#formSave").serialize(),dataType: "JSON",success: function (res) {if (res.status) {alert("添加成功");{##清空表单#}$("#formSave")[0].reset();{#关闭对话框#}$('#myModal').modal('hide'){#添加自动刷新#}location.reload();} else {if (res.tips) {alert(res.tips);} else {$.each(res.error, function (name, errorlist) {{#console.log(name, errorlist)#}$("#id_" + name).next().text(errorlist[0]);})}}}})}function doAdd() {$.ajax({url: '/order/add/',type: "post",data: $("#formSave").serialize(),dataType: "JSON",success: function (res) {if (res.status) {alert("添加成功");{##清空表单#}$("#formSave")[0].reset();{#关闭对话框#}$('#myModal').modal('hide'){#添加自动刷新#}location.reload();} else {{#console.log(res.error);#}$.each(res.error, function (name, errorlist) {{#console.log(name, errorlist)#}$("#id_" + name).next().text(errorlist[0]);})}}})}{#向后台发送请求(添加ajax请求#}})}function bindBtnDeleteEvent() {$(".btn-delete").click(function () {{#alert("点击了删除");#}$("#deleteModal").modal('show');{#  获取当前行的ID并赋值给全局变量  #}DELETE_ID = $(this).attr("uid");})}function bindBtnConfirmDeleteEvent() {$("#btnConfirmDelete").click(function () {{#    确认删除按钮,将确定删除的id发送给后台#}$.ajax({url: "/order/delete/",type: "GET",data: {uid: DELETE_ID},dataType: "JSON",success: function (res) {if (res.status) {{#alert("删除成功");#}{#$('#deleteModal').modal('hide');#}{#location.reload();#}{#    在页面上将当前一行数据删除#}{#$("tr[uid='"+DELETE_ID +"']").remove();#}{#    要删除的id置为空#}{#DELETE_ID = 0;#}location.reload();} else {alert(res.error);}}})})}function bindBtnEditEvent() {$(".btn-edit").click(function () {var uid = $(this).attr("uid");EDIT_ID = uid{#设置对话框标题#}$("#myModalLabel").text("编辑"){#alert("点击了编辑");#}{#  发送ajax去后端获取当前行的相关数据#}$.ajax({url: "/order/detail/",type: "get",data: {uid: uid},dataType: "JSON",success: function (res) {if (res.status) {$.each(res.data, function (name, value) {$("#id_" + name).val(value);})$("#myModal").modal('show');} else {alert(res.error)}}}){#  在对话框中默认看到#}})}</script>
{% endblock %}

注意:
订单号:form.instance.oid = datetime.now().strftime(“%Y%m%d%H%M%S”) + str(random.randint(1000, 9999))
当前管理员:form.instance.admin_id = request.session[“info”][“id”]

{% extends 'layout.html' %}{% block content %}<div class="container"><div>{#            <input type="button" value="新建订单1" class="btn btn-primary" data-toggle="modal" data-target="#myModal">#}<input id="btnAdd" type="button" value="新建订单2" class="btn btn-success"></div><div class="panel panel-default" style="margin-top: 20px;"><!-- Default panel contents --><div class="panel-heading"><div><span class="glyphicon glyphicon-th-list" aria-hidden="true"> 订单列表 </span></div></div><!-- Table --><table class="table"><thead><tr><th>id</th><th>订单号</th><th>名称</th><th>价格</th><th>状态</th><th>负责人</th><th>操作</th></tr></thead><tbody>{% for obj in queryset %}<tr><th>{{ obj.id }}</th><td>{{ obj.oid }}</td><td>{{ obj.title }}</td><td>{{ obj.price }}</td><td>{{ obj.get_status_display }}</td><td>{{ obj.admin.username }}</td><td><input uid="{{ obj.id }}" type="button" class="btn btn-primary btn-xs btn-edit" value="编 辑"><input uid="{{ obj.id }}" class="btn btn-danger btn-xs btn-delete" type="button"value="删 除"></td></tr>{% endfor %}</tbody></table></div><ul class="pagination">{{ page_string }}</ul></div>{#新建/编辑对话框#}<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><spanaria-hidden="true">&times;</span></button><h4 class="modal-title" id="myModalLabel">新建</h4></div><div class="modal-body"><form id="formSave"><div class="clearfix">{% for field in form %}<div class="col-xs-6"><div class="form-group,col-ms-2"style="margin-bottom: 20px ;position:relative;">{#                            <div class="form-control">#}<label>{{ field.label }}</label>{{ field }}<span class="error-msg" style="color: red;position: absolute"></span></div></div>{% endfor %}</div></form></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">取 消</button><button id="btnSave" type="button" class="btn btn-primary">保 存</button></div></div></div></div>{#删除对话框#}<div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="deleteModalLabel"><div class="modal-dialog" role="document"><div class="alert alert-danger alert-dismissible fade in" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><spanaria-hidden="true">×</span></button><h4>是否删除?</h4><p style="margin:10px 0px;">确定删除后,选取数据所有相关的数据都会被删除</p><p style="text-align: right ;"><button id="btnConfirmDelete" type="button" class="btn btn-danger">确 定</button><button type="button" class="btn btn-default" data-dismiss="modal">取 消</button></p></div></div></div>{#删除对话框#}{% endblock %}{% block js %}<script type="text/javascript">var DELETE_IDvar EDIT_ID$(function () {bindBtnAddEvent();bindBtnSaveEvent();bindBtnDeleteEvent();bindBtnConfirmDeleteEvent();bindBtnEditEvent();})function bindBtnAddEvent() {$('#btnAdd').click(function () {{#将正在编辑的ID设置为空#}EDIT_ID = undefined;{#清空对话框中的数据#}$("#formSave")[0].reset();$("#myModalLabel").text("新建")$('#myModal').modal('show')});}function bindBtnSaveEvent() {$("#btnSave").click(function () {{#清除错误信息#}$(".error-msg").empty();if (EDIT_ID) {//编辑doEdit();} else {//添加doAdd();}function doEdit() {$.ajax({url: '/order/edit/' + "?uid=" + EDIT_ID,type: "post",data: $("#formSave").serialize(),dataType: "JSON",success: function (res) {if (res.status) {alert("添加成功");{##清空表单#}$("#formSave")[0].reset();{#关闭对话框#}$('#myModal').modal('hide'){#添加自动刷新#}location.reload();} else {if (res.tips) {alert(res.tips);} else {$.each(res.error, function (name, errorlist) {{#console.log(name, errorlist)#}$("#id_" + name).next().text(errorlist[0]);})}}}})}function doAdd() {$.ajax({url: '/order/add/',type: "post",data: $("#formSave").serialize(),dataType: "JSON",success: function (res) {if (res.status) {alert("添加成功");{##清空表单#}$("#formSave")[0].reset();{#关闭对话框#}$('#myModal').modal('hide'){#添加自动刷新#}location.reload();} else {{#console.log(res.error);#}$.each(res.error, function (name, errorlist) {{#console.log(name, errorlist)#}$("#id_" + name).next().text(errorlist[0]);})}}})}{#向后台发送请求(添加ajax请求#}})}function bindBtnDeleteEvent() {$(".btn-delete").click(function () {{#alert("点击了删除");#}$("#deleteModal").modal('show');{#  获取当前行的ID并赋值给全局变量  #}DELETE_ID = $(this).attr("uid");})}function bindBtnConfirmDeleteEvent() {$("#btnConfirmDelete").click(function () {{#    确认删除按钮,将确定删除的id发送给后台#}$.ajax({url: "/order/delete/",type: "GET",data: {uid: DELETE_ID},dataType: "JSON",success: function (res) {if (res.status) {{#alert("删除成功");#}{#$('#deleteModal').modal('hide');#}{#location.reload();#}{#    在页面上将当前一行数据删除#}{#$("tr[uid='"+DELETE_ID +"']").remove();#}{#    要删除的id置为空#}{#DELETE_ID = 0;#}location.reload();} else {alert(res.error);}}})})}function bindBtnEditEvent() {$(".btn-edit").click(function () {var uid = $(this).attr("uid");EDIT_ID = uid{#设置对话框标题#}$("#myModalLabel").text("编辑"){#alert("点击了编辑");#}{#  发送ajax去后端获取当前行的相关数据#}$.ajax({url: "/order/detail/",type: "get",data: {uid: uid},dataType: "JSON",success: function (res) {if (res.status) {$.each(res.data, function (name, value) {$("#id_" + name).val(value);})$("#myModal").modal('show');} else {alert(res.error)}}}){#  在对话框中默认看到#}})}</script>
{% endblock %}

相关文章:

【web开发】9、Django(4)ajax请求

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、Ajax是什么&#xff1f;二、使用步骤二、订单管理 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、Ajax是什么&#xff1f; Ajax&…...

消息队列中,如何保证消息的顺序性?

本文选自&#xff1a;advanced-java 作者&#xff1a;yanglbme 问&#xff1a;如何保证消息的顺序性&#xff1f; 面试官心理分析 其实这个也是用 MQ 的时候必问的话题&#xff0c;第一看看你了不了解顺序这个事儿&#xff1f;第二看看你有没有办法保证消息是有顺序的&#xf…...

Shell别名的使用方法及管理技巧

文章目录 1. 引言1.1 概述1.2 目的1.3 适用范围 2. Shell和别名2.1 Shell简介2.2 别名的作用2.3 别名的语法 3. 创建别名3.1 临时别名3.2 永久别名 4. 别名的应用4.1 简化命令4.2 自定义命令4.3 提高工作效率 5. 管理别名5.1 查看别名5.2 修改别名5.3 删除别名 6. 实例演示6.1 …...

C/C++选择题好题分享

...

kafka副本机制

目录 前言 副本定义 副本角色 In-sync Replicas&#xff08;ISR&#xff09; 参考资料 前言 现在的很多的分布式系统都支持副本的机制&#xff0c;比如Mysql就有副本的机制&#xff0c;一般使用副本有如下特性和好处。 提供数据冗余。即使系统部分组件失效&#xff0c;系…...

服务注册发现_actuator微服务信息完善

SpringCloud体系里的&#xff0c;服务实体向eureka注册时&#xff0c;注册名默认是IP名:应用名:应用端口名。 问题&#xff1a; 自定义服务在Eureka上的实例名怎么弄呢 在服务提供者pom中配置Actuator依赖 <!-- actuator监控信息完善 --> <dependency><groupId…...

常见列表字典排序

一、列表排序 demoList [1, 3, 2, 4, 9 ,7]res sorted(demoList) # 默认升序# 降序 # res sorted(demoList, reverseTrue)print(res)二、字典排序 demoDict {"篮球": 5, "排球": 9, "网球": 6, "足球": 3}# sorted排序 res so…...

【Acwing1027】方格取数(动态规划)题解

题目描述 思路分析 错误思路&#xff1a; 贪心法&#xff0c;先走一次求出最大值&#xff0c;把走过的路上面的数值清零&#xff0c;然后用同样的方法再走一遍求最大值&#xff0c;然后让这两个最大值相加就是最后的结果。 很多人在看到这个题目的时候会有上面的思路&#x…...

合并区间:解决区间重叠问题的高效算法

合并区间&#xff1a;解决区间重叠问题的高效算法 leetcode 56. 合并区间 合并区间是一个常见的编程问题&#xff0c;通常涉及到一组区间&#xff0c;你需要将重叠的区间合并成更大的区间。这篇博客将介绍这个问题的背景&#xff0c;然后解释一个高效的解决方案&#xff0c;同…...

万字总结HTML超文本标记语言

一、前言:什么是网页? 网站是指在因特网上根据一定的规则,使用 HTML 等制作的用于展示特定内容相关的网页集合。网页是网站中的一“页”,通常是 HTML 格式的文件,它要通过浏览器来阅读。 网页是构成网站的基本元素,它通常由图片、链接、文字、声音、视频等元素组成。通常…...

Java线程池是如何保证核心线程不被销毁的

来源: Java线程池是如何保证核心线程不被销毁的_朝 花 拾 夕的博客-CSDN博客 对于Java中 Thread 对象&#xff0c;同一个线程对象调用 start 方法后&#xff0c;会在执行完run 后走向终止&#xff08;TERMINATED&#xff09;状态&#xff0c;也就是说一个线程对象是不可以通过多…...

新课程标准培养学生“高考物理关键能力”的实践研究课题文献综述

目录 一、高考物理能力的要求与评估标准 二、高考物理关键能力的定义与内涵...

急救车工业路由器应用提升急救效率:车联网、数据采集与远程诊疗

急救车作为医院里医疗急救过程中的重要组成部分&#xff0c;在智慧医疗物联网领域中急救车应用4G工业路由器实现网络部署与数据采集&#xff0c;通过工业4G路由器能够实时采集到病患的生理数据、救护现场音频与视频、GPS定位以及车辆运行状态等重要信息。这些数据将被传输到医疗…...

【操作系统】聊聊CPU上下文切换实操

如何查看系统的上下文切换情况 上一篇文章我们说了过多的上下文切换&#xff0c;会把CPU时间消耗在寄存器、内核栈以及虚拟内存等数据的保存和恢复上&#xff0c;那么当出现系统的上下文切换过多的时候&#xff0c;我们如果通过监控指标查看呢。 vmstat 是一个常用的系统性能…...

【java】【SpringBoot】【四】原理篇 bean、starter、核心原理

目录 一、自动配置 1、bean加载方式&#xff08;复习&#xff09; 1.1 加载方式-xml方式生命bean 1.2 加载方式-xml注解方式声明bean 1.3 注解方式声明配置类 1.4 FactoryBean 1.5 proxyBeanMethod属性 1.6 使用Import注解导入 1.7 使用上下文对象在容器初始化完毕后注…...

【精品资源】Java毕业设计攻略:从选题到答辩,一站式指南

导读&#xff1a; Java毕业设计是计算机科学与技术专业学生展示其编程能力、问题解决能力和创新思维的重要环节。这篇博客将为您提供一站式的Java毕业设计攻略&#xff0c;帮助您从选题到答辩&#xff0c;顺利完成毕业设计。 一、选题阶段 寻找灵感&#xff1a; 探讨热门技术如…...

文件高效批量重命名,轻松重命名不同类型的文件名并隐藏编号

你是否曾经因为文件名混乱而感到困扰&#xff1f;你是否希望有一种方法可以快速、简单地管理你的文件名&#xff1f;如果你的答案是肯定的&#xff0c;那么我们的产品——文件重命名工具&#xff0c;将是你的完美解决方案&#xff01; 首先我们要进入文件批量改名高手主页面&a…...

接口的定义与实现

一个c&#xff0c;代表类&#xff08;class&#xff09;。 一个c再加上两竖线&#xff0c;代表抽象类。 一个i&#xff0c;代表接口&#xff08;interface&#xff09;。 package com.mypackage.oop.demo12;//接口都需要有一个实现类 public interface UserService {//接口中定…...

浅谈低压绝缘监测及定位系统在海上石油平台的研究与应用

安科瑞 华楠 摘要&#xff1a;海上石油平台低压系统与陆地电力系统有很大区别&#xff0c;其属于中性点绝缘系统&#xff0c;在出现单相接地故障时&#xff0c;系统允许带故障正常运行2 h&#xff0c;保证海上重要电气设备不会立即关停。现以渤海某海上平台为例&#xff0c;其…...

Java项目:SSM的食堂点餐系统

作者主页&#xff1a;Java毕设网 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 一、相关文档 系统中的核心用户是系统管理员&#xff0c;管理员登录后&#xff0c;通过管理员菜单来管理后台系统。主要功能有&#xff1a;个人中心、用户管理…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 &#xff0c;不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源&#xff08;最常用&#xff09; conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)

引言 在嵌入式系统中&#xff0c;用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例&#xff0c;介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单&#xff0c;执行相应操作&#xff0c;并提供平滑的滚动动画效果。 本文设计了一个…...