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

每天40分玩转Django:Django表单集

Django表单集

一、知识要点概览表

类别知识点掌握程度要求
基础概念FormSet、ModelFormSet深入理解
内联表单集InlineFormSet、BaseInlineFormSet熟练应用
表单集验证clean方法、验证规则熟练应用
自定义配置extra、max_num、can_delete理解应用
动态管理JavaScript动态添加/删除表单掌握使用

二、基础模型和表单设置

# models.py
from django.db import modelsclass Author(models.Model):name = models.CharField(max_length=100)email = models.EmailField()bio = models.TextField()def __str__(self):return self.nameclass Book(models.Model):author = models.ForeignKey(Author, on_delete=models.CASCADE)title = models.CharField(max_length=200)isbn = models.CharField(max_length=13)publication_date = models.DateField()price = models.DecimalField(max_digits=10, decimal_places=2)def __str__(self):return self.title# forms.py
from django import forms
from .models import Author, Bookclass AuthorForm(forms.ModelForm):class Meta:model = Authorfields = ['name', 'email', 'bio']class BookForm(forms.ModelForm):class Meta:model = Bookfields = ['title', 'isbn', 'publication_date', 'price']

三、基本表单集实现

1. 创建表单集

# forms.py
from django.forms import modelformset_factory, formset_factory# 创建Book模型的表单集
BookFormSet = modelformset_factory(Book,form=BookForm,extra=2,  # 额外空表单数量max_num=5,  # 最大表单数量can_delete=True  # 允许删除
)# 创建自定义表单集
class BaseBookFormSet(forms.BaseModelFormSet):def clean(self):super().clean()titles = []for form in self.forms:if form.cleaned_data:title = form.cleaned_data.get('title')if title in titles:raise forms.ValidationError("书籍标题不能重复")titles.append(title)# 使用自定义表单集基类
BookFormSet = modelformset_factory(Book,form=BookForm,formset=BaseBookFormSet,extra=2
)

2. 视图实现

# views.py
from django.shortcuts import render, redirect
from django.contrib import messages
from .forms import BookFormSet, AuthorFormclass BookFormSetView(View):template_name = 'books/book_formset.html'def get(self, request):formset = BookFormSet(queryset=Book.objects.none())return render(request, self.template_name, {'formset': formset})def post(self, request):formset = BookFormSet(request.POST)if formset.is_valid():instances = formset.save()messages.success(request, f'成功保存{len(instances)}本书籍信息')return redirect('book_list')return render(request, self.template_name, {'formset': formset})def manage_books(request, author_id):author = get_object_or_404(Author, id=author_id)if request.method == 'POST':formset = BookFormSet(request.POST,queryset=Book.objects.filter(author=author))if formset.is_valid():books = formset.save(commit=False)for book in books:book.author = authorbook.save()# 处理删除的书籍for obj in formset.deleted_objects:obj.delete()return redirect('author_detail', pk=author.pk)else:formset = BookFormSet(queryset=Book.objects.filter(author=author))return render(request, 'books/manage_books.html', {'formset': formset,'author': author})

四、内联表单集实现

1. 创建内联表单集

# forms.py
from django.forms import inlineformset_factory# 创建Author-Book内联表单集
BookInlineFormSet = inlineformset_factory(Author,  # 父模型Book,    # 子模型form=BookForm,extra=2,max_num=5,can_delete=True
)# 自定义内联表单集
class BaseBookInlineFormSet(forms.BaseInlineFormSet):def clean(self):super().clean()total_price = 0for form in self.forms:if form.cleaned_data and not form.cleaned_data.get('DELETE', False):price = form.cleaned_data.get('price', 0)total_price += priceif total_price > 1000:raise forms.ValidationError("所有书籍总价不能超过1000")# 使用自定义内联表单集
BookInlineFormSet = inlineformset_factory(Author,Book,form=BookForm,formset=BaseBookInlineFormSet,extra=2
)

2. 视图实现

# views.py
from django.views.generic.edit import UpdateView
from .forms import BookInlineFormSetclass AuthorBooksUpdateView(UpdateView):model = Authorform_class = AuthorFormtemplate_name = 'books/author_books_form.html'def get_context_data(self, **kwargs):context = super().get_context_data(**kwargs)if self.request.POST:context['book_formset'] = BookInlineFormSet(self.request.POST,instance=self.object)else:context['book_formset'] = BookInlineFormSet(instance=self.object)return contextdef form_valid(self, form):context = self.get_context_data()book_formset = context['book_formset']if book_formset.is_valid():self.object = form.save()book_formset.instance = self.objectbook_formset.save()return redirect('author_detail', pk=self.object.pk)return self.render_to_response(self.get_context_data(form=form))

五、表单集模板实现

<!-- templates/books/author_books_form.html -->
{% extends 'base.html' %}
{% load static %}{% block content %}
<div class="container"><h1>编辑作者及其书籍</h1><form method="post">{% csrf_token %}<div class="author-form"><h2>作者信息</h2>{{ form.as_p }}</div><div class="books-formset"><h2>书籍信息</h2>{{ book_formset.management_form }}<div id="book-forms">{% for book_form in book_formset %}<div class="book-form">{{ book_form.non_field_errors }}<div class="form-row"><div class="form-group">{{ book_form.title.label_tag }}{{ book_form.title }}{{ book_form.title.errors }}</div><div class="form-group">{{ book_form.isbn.label_tag }}{{ book_form.isbn }}{{ book_form.isbn.errors }}</div><div class="form-group">{{ book_form.price.label_tag }}{{ book_form.price }}{{ book_form.price.errors }}</div>{% if book_form.instance.pk %}{{ book_form.DELETE }}{% endif %}</div></div>{% endfor %}</div><button type="button" id="add-book" class="btn btn-secondary">添加书籍</button></div><button type="submit" class="btn btn-primary mt-3">保存</button></form>
</div>{% block extra_js %}
<script>
$(document).ready(function() {// 获取表单总数const totalForms = $('#id_book_set-TOTAL_FORMS');// 添加新书籍表单$('#add-book').click(function() {const formCount = parseInt(totalForms.val());const newForm = $('#book-forms .book-form:first').clone(true);// 更新表单索引newForm.find(':input').each(function() {const name = $(this).attr('name').replace('-0-', '-' + formCount + '-');const id = 'id_' + name;$(this).attr({'name': name, 'id': id}).val('');});// 更新标签的for属性newForm.find('label').each(function() {const newFor = $(this).attr('for').replace('-0-', '-' + formCount + '-');$(this).attr('for', newFor);});// 添加新表单到DOM$('#book-forms').append(newForm);totalForms.val(formCount + 1);});
});
</script>
{% endblock %}
{% endblock %}

六、表单集处理流程图

在这里插入图片描述

七、高级用法示例

1. 工厂函数自定义

def get_book_formset(extra=1, max_num=None):return modelformset_factory(Book,form=BookForm,extra=extra,max_num=max_num,validate_max=True,can_delete=True,widgets={'title': forms.TextInput(attrs={'class': 'form-control'}),'isbn': forms.TextInput(attrs={'class': 'form-control'}),'price': forms.NumberInput(attrs={'class': 'form-control'})})# 在视图中使用
def manage_books_dynamic(request):BookFormSet = get_book_formset(extra=2,max_num=10)if request.method == 'POST':formset = BookFormSet(request.POST)if formset.is_valid():formset.save()return redirect('book_list')else:formset = BookFormSet()return render(request, 'books/manage_books.html', {'formset': formset})

2. 条件验证

class BaseBookFormSet(forms.BaseModelFormSet):def clean(self):super().clean()# 检查ISBN唯一性isbns = []for form in self.forms:if form.cleaned_data and not form.cleaned_data.get('DELETE', False):isbn = form.cleaned_data.get('isbn')if isbn in isbns:raise forms.ValidationError('ISBN必须唯一')isbns.append(isbn)# 检查总价格total_price = sum(form.cleaned_data.get('price', 0)for form in self.formsif form.cleaned_data and not form.cleaned_data.get('DELETE', False))if total_price > 1000:raise forms.ValidationError('所有书籍总价不能超过1000')

3. 动态表单处理

# views.py
from django.http import JsonResponseclass DynamicBookFormView(View):def post(self, request):if request.is_ajax():formset = BookFormSet(request.POST)if formset.is_valid():instances = formset.save()return JsonResponse({'status': 'success','message': f'成功保存{len(instances)}本书籍'})else:errors = []for form in formset:for field, error in form.errors.items():errors.append(f"{field}: {error}")return JsonResponse({'status': 'error','errors': errors})return JsonResponse({'status': 'error', 'message': '非法请求'})

这就是关于Django表单集的详细内容。通过学习这些内容,你将能够理解和使用Django的表单集系统,实现复杂的表单处理逻辑。如果有任何问题,欢迎随时提出!


怎么样今天的内容还满意吗?再次感谢朋友们的观看,关注GZH:凡人的AI工具箱,回复666,送您价值199的AI大礼包。最后,祝您早日实现财务自由,还请给个赞,谢谢!

相关文章:

每天40分玩转Django:Django表单集

Django表单集 一、知识要点概览表 类别知识点掌握程度要求基础概念FormSet、ModelFormSet深入理解内联表单集InlineFormSet、BaseInlineFormSet熟练应用表单集验证clean方法、验证规则熟练应用自定义配置extra、max_num、can_delete理解应用动态管理JavaScript动态添加/删除表…...

构建混合技术栈的统一监控与日志平台

文章目录 摘要引言构建统一监控与日志平台的核心思路痛点分析解决方案 平台架构设计架构概览 环境准备Java 服务的 Prometheus 指标导出Prometheus 指标采集模块Node.js 日志收集模块3. Logstash 配置4. Grafana 与 Kibana 配置 QA 环节总结未来展望参考资料 摘要 在多技术栈开…...

KOI技术-事件驱动编程(Sping后端)

1 “你日渐平庸&#xff0c;甘于平庸&#xff0c;将继续平庸。”——《以自己喜欢的方式过一生》 2. “总是有人要赢的&#xff0c;那为什么不能是我呢?”——科比布莱恩特 3. “你那么憎恨那些人&#xff0c;和他们斗了那么久&#xff0c;最终却要变得和他们一样&#xff0c;…...

ubuntu 20.04 国内源安装docker

先更新软件包&#xff0c;安装备要apt软件 # 更新软件包索引 sudo apt-get update# 安装需要的软件包以使apt能够通过HTTPS使用仓库 sudo apt-get install ca-certificates curl gnupg lsb-release使用阿里云源 # 添加阿里云官方GPG密钥 curl -fsSL http://mirrors.aliyun.co…...

微信小程序 app.json 配置文件解析与应用

目录 一、什么是 app.json&#xff1f; 二、app.json 文件的基本结构 三、详细解析 app.json 配置项 1. pages&#xff1a;小程序页面路径配置 2. window&#xff1a;窗口样式配置 3. tabBar&#xff1a;底部标签栏配置 4. networkTimeout&#xff1a;网络请求超时配置 …...

C高级:思维导图Day2

目录 总览1 总览2 总览1 压缩与解压缩 打包与解包 软连接与硬链接 ubuntu下关机与重启指令 总览2 结束...

蓝桥杯(Java)(ing)

Java前置知识 输入流&#xff1a; &#xff08;在Java面向对象编程-CSDN博客里面有提过相关知识------IO流&#xff09; // 快读快写 static BufferedReader in new BufferedReader(new InputStreamReader(System.in)); static BufferedWriter out new BufferedWriter(new…...

[Pro Git#2] 分支管理 | branch fix_bug , feature | 处理合并冲突

目录 一、Issue模板文件 二、Pull Requests模板文件 分支管理 1. 理解分支 2. 创建与管理分支 1. 切换分支与提交历史 2. 合并分支 3. 删除分支 4. 解决合并冲突 6. 查看分支合并情况 快速创建并切换分支 分支管理策略 分支合并模式 分支管理原则 日常开发环境 …...

Java——集合框架

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1 集合框架概述1.1 内存层面需要针对多个数据进行存储。此时&#xff0c;可以考虑的容器有&#xff1a;1.2 数组存储多个数据方面的特点和弊端1.3 Java集合框架体系…...

Mac 环境 VVenC 编译与编码命令行工具使用教程

VVenC VVenC 是一个开源的高效视频编码器&#xff0c;专门用于支持 H.266/VVC (Versatile Video Coding) 标准的编码。H.266/VVC 是继 HEVC (H.265) 之后的新一代视频编码标准&#xff0c;主要目的是提供比 HEVC 更高的压缩效率&#xff0c;同时保持或提高视频质量。H.266/VVC…...

WebRTC:实现浏览器与移动应用的实时通信

1.技术简介 &#xff08;Web Real-Time&#xff09;是一种开放式实时通信技术&#xff0c;旨在使浏览器和移动应用程序通过简单的API即可实现实时音频、视频和数据传输&#xff0c;而无需安装插件或额外软件。它支持网络应用中的点对点通信&#xff0c;例如视频聊天、语音通话…...

curl+openssl 踩坑笔记

curl编译&#xff1a;点击跳转 踩坑一 * SSL certificate problem: unable to get local issuer certificate * closing connection #0 curl: (60) SSL certificate problem: unable to get local issuer certificate More details here: https://curl.se/docs/sslcerts.html …...

【NebulaGraph】变化的多跳查询

【NebulaGraph】变化的多跳查询 1. 需求2. 解决方案2.1 确定查询结构2.2 构建查询语句 3. 追加需求&#xff1a;如果增加每一跳都要指定查询某SPACE下的Tag&#xff0c;或者不查询某个Tag怎么办 1. 需求 存在多跳请求&#xff0c;其中每一跳是从上一跳查询结果为基础的。但是 …...

【C++】九九乘法表编程题详解与多角度对比分析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目概述题目描述 &#x1f4af;老师的实现方法代码解析优点不足 &#x1f4af;我的实现方法代码解析优点不足 &#x1f4af;实现方法对比&#x1f4af;优化与扩展代码优化…...

node.js卸载并重新安装(超详细图文步骤)

卸载node.js 重新安装nodejs 一、卸载 1、首先进入控制面板卸载程序 2、卸载后 到文件夹中进行进一步的删除 删除上述的几个文件夹 每个人可能不一样&#xff0c;总之是找到自己的nodejs安装路径&#xff0c;下面是我的 ①删除C:UsersAdminAppDataRoaming路径下的npm相关文件…...

redis的集群模式与ELK基础

一、redis的集群模式 1.主从复制 &#xff08;1&#xff09;概述 主从模式&#xff1a;这是redis高可用的基础&#xff0c;哨兵和集群都是建立在此基础之上。 主从模式和数据库的主从模式是一样的&#xff0c;主负责写入&#xff0c;然后把写入的数据同步到从服务器&#xff…...

一份关于 Ubuntu 系统下代理配置的故障排查笔记

Ubuntu 网络代理配置与故障排查指南 在使用 Ubuntu 系统时&#xff0c;配置网络代理可以帮助提升网络访问速度或突破网络限制。然而&#xff0c;代理配置过程中可能会遇到各种问题。本文将详细介绍如何在 Ubuntu 下配置网络代理&#xff0c;并提供故障排查的步骤和解决方案。 …...

如何用jmeter工具进行性能测试

前言 今天我们来说说jmeter如何进行性能测试&#xff0c;我们都知道jmeter工具除了可以进行接口功能测试外&#xff0c;还可以进行性能测试。当项目趋于稳定&#xff0c;根据性能需求就可以着手准备性能测试了&#xff0c;今天就说一说jmeter如何进行性能测试&#xff0c;jmet…...

五、Vue 循环语句

文章目录 简介一、基础数组迭代二、对象属性迭代三、整数循环 简介 在 Vue.js 的世界里&#xff0c;当我们需要处理重复性的结构并依据数据动态渲染时&#xff0c;v-for 指令就成了不可或缺的工具&#xff0c;它赋予开发者简洁且强大的能力&#xff0c;轻松应对各种列表渲染场景…...

HMSC联合物种分布模型

联合物种分布模型&#xff08;Joint Species Distribution Modelling&#xff0c;JSDM&#xff09;在生态学领域&#xff0c;特别是群落生态学中发展最为迅速&#xff0c;Hmsc是物种群落分层模型的缩写(Hierarchical Modelling of Species Communities)&#xff0c;它是一种基于…...

【CPU】risc-v指令集和其他指令集的差别(个人草稿)

第三&#xff0c;在 RISC-V 中对于所有指令&#xff0c;要读写的寄存器的标识符总是在同一位置&#xff0c;意味着在解码指令之前&#xff0c;就可以先开始访问寄存器。在许多其他的 ISA 中&#xff0c;某些指令字段在部分指令中被重用作为源目的地&#xff0c;在其他指令中又被…...

处理元素卡在视野边界,滚动到视野内

效果图如下&#xff1a; 本示例处理场景&#xff1a;点击底部的折叠面板&#xff0c;展开后移动端滚动条位置不变&#xff0c;导致展开内容在视图外。造成面板展开无内容的错觉。 处理核心API: IntersectionObserver 此API可绑定元素并监听元素是否在视野内。若在视野外​​​…...

环,域,体,整区,理想,极大理想,

环&#xff1a; 定义&#xff1a; 加法交换群 乘法半群 分配律 域的定义&#xff1a; 加法交换群 乘法群&#xff08;去掉0元是交换群&#xff09; 分配律 Eg:比如整数集合不是域&#xff0c;因为对于乘法来说&#xff0c;去掉0后没有单位元了&#xff0c;但是是环 Eg…...

音视频入门基础:MPEG2-TS专题(22)——FFmpeg源码中,获取TS流的音频信息的实现

音视频入门基础&#xff1a;MPEG2-TS专题系列文章&#xff1a; 音视频入门基础&#xff1a;MPEG2-TS专题&#xff08;1&#xff09;——MPEG2-TS官方文档下载 音视频入门基础&#xff1a;MPEG2-TS专题&#xff08;2&#xff09;——使用FFmpeg命令生成ts文件 音视频入门基础…...

大模型—Ollama 结构化输出

Ollama 结构化输出 Ollama现在支持结构化输出,使得可以按照由JSON模式定义的特定格式来约束模型的输出。Ollama的Python和JavaScript库已经更新,以支持结构化输出。 结构化输出的用例包括: 从文档中解析数据从图像中提取数据结构化所有语言模型响应比JSON模式更可靠和一致开…...

基于Pytorch和yolov8n手搓安全帽目标检测的全过程

一.背景 还是之前的主题&#xff0c;使用开源软件为公司搭建安全管理平台&#xff0c;从视觉模型识别安全帽开始。主要参考学习了开源项目 https://github.com/jomarkow/Safety-Helmet-Detection&#xff0c;我是从运行、训练、标注倒过来学习的。由于工作原因&#xff0c;抽空…...

数据结构与算法基础(C语言版)

参考资料&#xff1a;https://www.bilibili.com/video/BV1GW421A7qY/ 所有代码均已在Ubuntu 20.04.6 LTS中测试通过 逻辑结构与存储结构 逻辑结构 逻辑结构指的是数据对象中数据元素间的相互关系&#xff0c;分为以下四种&#xff1a; 集合结构 集合结构中的数据元素除了同属于…...

Qt监控系统放大招/历经十几年迭代完善/多屏幕辅屏预览/多层级设备树/网络登录和回放

一、前言说明 近期对视频监控系统做了比较大的更新升级&#xff0c;主要就是三点&#xff0c;第一点就是增加了辅屏预览&#xff0c;这个也是好多个客户需要的功能&#xff0c;海康的iVMS-4200客户端就有这个功能&#xff0c;方便在多个屏幕打开不同的视频进行查看&#xff0c…...

使用Locust对MySQL进行负载测试

1.安装环境 pip install locust mysql-connector-python 2.设置测试环境 打开MySQL服务 打开Navicat新建查询&#xff0c;输入SQL语句 3.编写locust脚本 load_mysql.py # codingutf-8 from locust import User, TaskSet, task, between import mysql.connector import ran…...

layui多图上传,tp8后端接收处理

环境&#xff1a;layui2.9.21\thinkphp8.1 前端代码&#xff1a; layui.use([upload, layer], function() {const upload layui.upload;const layer layui.layer;const $ layui.$;// 上传图片const uploadInstImage upload.render({elem: #uploadImage,url: /admin/demo/…...

【Rust自学】8.3. String类型 Pt.1:字符串的创建、更新与拼接

8.3.0. 本章内容 第八章主要讲的是Rust中常见的集合。Rust中提供了很多集合类型的数据结构&#xff0c;这些集合可以包含很多值。但是第八章所讲的集合与数组和元组有所不同。 第八章中的集合是存储在堆内存上而非栈内存上的&#xff0c;这也意味着这些集合的数据大小无需在编…...

Linux(Ubuntu)下ESP-IDF下载与安装完整流程(1)

本文主要看参考官网说明,如下: 快速入门 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 Linux 和 macOS 平台工具链的标准设置 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 一、安装准备 为了在ESP32-S3中使用ESP-IDF,需要根据操作系统安装一些软件包。可以参考以下安…...

Android性能优化—— 内存优化

Android 系统中&#xff0c;垃圾回收是自动的&#xff0c;比较隐蔽&#xff0c;这就导致一些内存问题表现的并不明显&#xff0c;出现问题后难以定位。常见的内存问题有内存泄漏、内存溢出&#xff08;Out of Memory&#xff09;、内存抖动等。 我们做内存优化的主要原因有以下…...

【MATLAB第111期】基于MATLAB的sobol全局敏感性分析方法二阶指数计算

【MATLAB第111期】基于MATLAB的sobol全局敏感性分析方法二阶指数计算 一、简介 在MATLAB中计算Sobol二阶效应指数通常涉及到全局敏感性分析&#xff08;Global Sensitivity Analysis, GSA&#xff09;&#xff0c;其中Sobol方法是一种流行的技术&#xff0c;用于评估模型输入…...

【Scala】图书项目系统代码演练3.1/BookService

package org.app package serviceimport models.{BookModel, BorrowRecordModel}import org.app.dao.{BookDAO, BorrowRecordDAO}import java.time.LocalDateTime import scala.collection.mutable.ListBuffer// 图书业务逻辑层 class BookService {private val bookDAO new B…...

Gateway

目录 使用 工作机制 Predicate断言 Filter过滤器&#xff08;鉴权&#xff09; GatewayFilter GlobalFilter 使用 Gateway底层是使用Ribbon来实现负载均衡的 新建模块&#xff0c;端口5001 1、引入依赖 spring-boot-starter-web里存在tomcat&#xff0c;spring-cloud-st…...

SpringSecurity中的过滤器链与自定义过滤器

关于 Spring Security 框架中的过滤器的使用方法,系列文章: 《SpringSecurity中的过滤器链与自定义过滤器》 《SpringSecurity使用过滤器实现图形验证码》 1、Spring Security 中的过滤器链 Spring Security 中的过滤器链(Filter Chain)是一个核心的概念,它定义了一系列过…...

【OTA】论文学习笔记--《基于RTOS的车载ECU双分区OTA升级技术分析报告》

引言 研究背景 - 汽车智能化、网联化发展趋势下,OTA升级已成为智能网联汽车的必备功能 - 传统RTOS控制器在OTA升级失败后无法进行软件回滚,导致控制器功能失效 - 现有技术主要针对Linux、QNX等智能操作系统,缺乏针对RTOS的解决方案 研究目的 提出一种适用于RTOS控制器的双分…...

MLA:多头潜在注意力

MLA:多头潜在注意力 多头潜在注意力(MLA)机制是一种在深度学习模型中用于处理序列数据的注意力机制的改进形式,以下是对其原理和示例的详细介绍: 原理 低秩键值联合压缩:MLA机制利用低秩键值联合压缩来消除注意力模块中的某些计算,从而提高模型的运行速度和性能。在传…...

【python】matplotlib(moon cake)

文章目录 1、Style12、Style23、Style34、Style45、Style56、Style67、Style78、参考的库函数matplotlib.patches.Arcmatplotlib.patches.Wedge 9、参考 1、Style1 """ author: tyran """from numpy import sin, cos, pi import matplotlib.pyp…...

C++ hashtable

文章目录 1. 基本概念2. 哈希函数3. 哈希冲突及解决方法开放定址法链地址法再哈希法建立公共溢出区4. 哈希表的操作实现5. 内存管理及优化 时间复杂度理想情况&#xff08;无哈希冲突或冲突极少&#xff09;一般情况&#xff08;考虑哈希冲突及解决方法&#xff09;综合来看 以…...

ip怎么查域名?IP和域名分别是什么?

为什么我们可以通过简单的域名访问网站&#xff0c;而不是记住一串复杂的数字&#xff1f;IP地址和域名之间到底是什么关系&#xff1f;在互联网的世界里&#xff0c;IP地址和域名是两种重要的概念&#xff0c;它们共同构成了我们日常上网的基础。 IP地址是互联网协议地址的缩…...

大模型提示词初探

大模型提示词初探 在与大模型交互的过程中&#xff0c;提示词起着至关重要的作用&#xff0c;它犹如给模型下达的精准任务指令&#xff0c;直接影响着模型生成内容的准确性、高效性与合理性。合理运用提示词&#xff0c;能够有效减少模型出现错误和幻觉的情况&#xff0c;从而…...

Linux的进程替换以及基础IO

进程替换 上一篇草率的讲完了进程地址空间的组成结构和之间的关系&#xff0c;那么我们接下来了解一下程序的替换。 首先&#xff0c;在进程部分我们提过了&#xff0c;其实文件可以在运行时变成进程&#xff0c;而我们使用的Linux软件其实也是一个进程&#xff0c;所以进一步…...

《Vue进阶教程》第三十一课:ref的初步实现

往期内容&#xff1a; 《Vue进阶教程》第二十课&#xff1a;lazy懒执行 《Vue进阶教程》第二十一课&#xff1a;支持缓存 《Vue进阶教程》第二十二课&#xff1a;自定义更新(调度器) 《Vue进阶教程》第二十三课&#xff1a;渲染计算属性的结果 《Vue进阶教程》第二十四课&…...

Wend看源码-Java-集合学习(Queue)

概述 Wend看源码-Java-集合学习(List)-CSDN博客 Wend看源码-Java-集合学习(Set)-CSDN博客 在前两篇文章中&#xff0c;我们分别探讨了Java集合框架的父类以及List集合和Set集合的实现。接下来&#xff0c;本文将重点阐述Java中的Queue集合&#xff0c;包括其内部的数据结…...

大数据面试笔试宝典之HBase面试

1.HBase 数据存储位置 HBase 中的数据存储在哪里? 以什么格式存储?和 Zookeeper 什么关系? 参考答案: 1.HBase 中的所有数据文件都存储在 Hadoop HDFS 文件系统上。 2.包含两种文件类型: HFile : HBase 中 KeyValue 数据的存储格式。HFile 是 Hadoop 的二进制格式文件…...

React基础知识学习

学习React前端框架是一个系统而深入的过程&#xff0c;以下是一份详细的学习指南&#xff1a; 一、React基础知识 React简介 React是一个用于构建用户界面的JavaScript库&#xff0c;由Facebook开发和维护。它强调组件化和声明式编程&#xff0c;使得构建复杂的用户界面变得更…...

实战指南:Shiro、CAS打造完美单点登录体验

引言 想象一下&#xff0c;在日常工作中&#xff0c;我们经常需要进行系统认证和授权。当用户尝试登录一个网站时&#xff0c;他们需要提供用户名和密码&#xff0c;网站会检查这些信息&#xff0c;确认用户是谁。这就是认证的过程。 一旦用户被认证&#xff0c;他们可能会尝…...

光储充一体化解决方案详解。

一、光储充介绍 1、什么是光储充 “光储充”一体化&#xff0c;顾名思义&#xff0c;是由光伏发电、储能、充电集成一体、互相协调支撑的绿色充电模式。其工作原理是利用光伏发电&#xff0c;余电由储能设备存储&#xff0c;共同承担供电充电任务。在用电高峰&#xff0c;光储…...