Django 基础知识详细图文教程 15-Django 内置Admin系统
来源引用网络知识与某站曹老师视频相互结合学习记录仅供参考Django 内置 Admin 系统Admin 后台系统也称为网站后台管理系统主要对网站的信息进行管理例如文字、图片、影音和其他日常使用的文件的发布、更新、删除等操作也包括功能信息的统计和管理大部分还是对一些网站信息、业务系统信息进行管理比如用户信息、订单信息和访客信息等简单来说它是对网站数据库和文件进行快速操作和管理的系统以使网页内容能够及时得到更新和调整Django 内置的还有一套 Auth 权限系统。Django 内置 Admin 系统初体验介绍了解怎么进入系统登录以及创建用户当一个网站上线之后网站管理员通过网站后台系统对网站进行管理和维护Django已内置Admin后台系统在创建Django项目的时候可以从项目的配置文件settings.py中看到项目已默认启用Admin后台系统。Django项目创建成功之后会默认自动生成相关的Django项目配置文件如若不需要自带的 Admin 系统可以自行删除这样的话会减轻系统启动的负担查看“djangoProject”应用下的“urls.py”配置文件内容可以看到“admin”对应的映射关系已经定义了 Admin 系统的首页地址如何进入 Admin 系统1、运行项目成功后浏览器输入“http://127.0.0.1:8000/admin”即可打开 Admin 系统首页默认跳转到 Admin 系统登录页面可以发现 Admin 登录页面是英文而一般开发一个网站交付给客户的话建议必须得是本地化中文的所以可以加一个中文本地化的中间件来实现汉化处理添加中间件2、修改“djangoProject”应用下的“settings.py”项目配置文件内容中的“MIDDLEWARE”配置项添加使用中文本地汉化中间件过滤设置语言需特别注意有顺序要求务必添加在第二个 Django settings for djangoProject project. Generated by django-admin startproject using Django 5.0.6. For more information on this file, see https://docs.djangoproject.com/en/5.0/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/5.0/ref/settings/ from pathlib import Path # Build paths inside the project like this: BASE_DIR / subdir. BASE_DIR Path(__file__).resolve().parent.parent # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY django-insecure-i01#6cjknb()(5p19olvc2$tf7ez86)r%g!b5(2pdkfd0 # SECURITY WARNING: dont run with debug turned on in production! DEBUG True ALLOWED_HOSTS [] # Application definition INSTALLED_APPS [ django.contrib.admin, django.contrib.auth, django.contrib.contenttypes, django.contrib.sessions, django.contrib.messages, django.contrib.staticfiles, helloWorld.apps.HelloworldConfig, user.apps.UserConfig, order.apps.OrderConfig ] MIDDLEWARE [ django.middleware.security.SecurityMiddleware, # 本地汉化使用中文(注意有顺序要求务必添加在第二个) django.middleware.locale.LocaleMiddleware, django.contrib.sessions.middleware.SessionMiddleware, django.middleware.common.CommonMiddleware, django.middleware.csrf.CsrfViewMiddleware, django.contrib.auth.middleware.AuthenticationMiddleware, django.contrib.messages.middleware.MessageMiddleware, django.middleware.clickjacking.XFrameOptionsMiddleware, helloWorld.mymid.md1.Md1 ] ROOT_URLCONF djangoProject.urls TEMPLATES [ { BACKEND: django.template.backends.django.DjangoTemplates, DIRS: [BASE_DIR / helloWorld/templates, BASE_DIR / templates] , APP_DIRS: True, OPTIONS: { context_processors: [ django.template.context_processors.debug, django.template.context_processors.request, django.contrib.auth.context_processors.auth, django.contrib.messages.context_processors.messages, ], }, }, { BACKEND: django.template.backends.jinja2.Jinja2, DIRS: [BASE_DIR / templates] , APP_DIRS: True, OPTIONS: { environment: helloWorld.Jinja3.environment }, }, ] WSGI_APPLICATION djangoProject.wsgi.application # Database # https://docs.djangoproject.com/en/5.0/ref/settings/#databases DATABASES { default: { ENGINE: django.db.backends.mysql, NAME: db_django6, USER: root, PASSWORD: 123, HOST: 192.168.88.145, PORT: 3306 } } # Password validation # https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS [ { NAME: django.contrib.auth.password_validation.UserAttributeSimilarityValidator, }, { NAME: django.contrib.auth.password_validation.MinimumLengthValidator, }, { NAME: django.contrib.auth.password_validation.CommonPasswordValidator, }, { NAME: django.contrib.auth.password_validation.NumericPasswordValidator, }, ] # Internationalization # https://docs.djangoproject.com/en/5.0/topics/i18n/ LANGUAGE_CODE en-us TIME_ZONE UTC USE_I18N True USE_TZ True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/5.0/howto/static-files/ STATIC_URL static/ # 设置静态资源文件集合 STATICFILES_DIRS [BASE_DIR / static, BASE_DIR / helloWorld/images, BASE_DIR / common] # 设置媒体路由 MEDIA_URL media/ # 设置media目录的完整路径 MEDIA_ROOT BASE_DIR / media # Default primary key field type # https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD django.db.models.BigAutoField3、重新运行项目浏览器输入“http://127.0.0.1:8000/admin”测试验证已经中文化成功4、Admin系统用户、权限、认证相关的表有6个里面包含系统用户表权限表用户组以及用户组权限关联表用户和组关联表用户权限关联表可打开连接项目数据库表查看其中auth_user是用来存后台管理员信息默认里面是没有数据的创建超级管理员可以通过 Python内置的manage.py的createsuperuser命令来创建超级管理员的账号和密码5、PyCharm 工具(I)菜单栏选中“运行 manage.py 任务...快捷键 CtrlAltR”使用 Django5 manage.py 提供的内置命令输入执行“createsuperuser”命令根据提示信息分别自定义输入“用户名、邮箱、密码”等相关信息最后成功创建超级管理员用户6、查看数据库表“auth_user”可以发现已经成功生成管理员数据信息了7、浏览器输入“http://127.0.0.1:8000/admin”打开Admin登录页面输入刚才创建的用户名和密码单击登录按钮登录 Admin 后台管理系统成功登录后进入到系统管理主页自行测试查看在Admin后台系统中可以看到网页布局分为站点管理、认证和授权、用户和组分别说明如下:站点管理是整个Admin后台的主体页面整个项目的App 所定义的模型都会在此页面显示认证和授权是Django内置的用户认证系统包括用户信息、权限管理和用户组设置等功能用户和组是认证和授权所定义的模型分别对应数据库 auth_user 和 auth_user_groups 表。登录测试探索Admin 管理员后台可自行进行添加修改用户等操作目前组还都是空的因为还没有添加相关信息还没有组可以增加一个组进行授权建议自行测试探索。Django 注册模型到 Admin 系统在开发业务系统的时候会定义很多的业务模型可以把模型注册到Admin系统让Admin系统帮忙维护这些模型也就是在Admin后台自动给模型实现增删改查功能注册模型到Admin系统有两个方式方式一直接将模型注册到admin后台8、以 BookTypeInfo 图书类别为例打开“djangoProject”项目“helloWorld”应用下的“admin.py”配置文件输入以下内容from django.contrib import admin from helloWorld.models import BookTypeInfo # Register your models here. 在这注册您的模型 # 方式一将模型直接注册到admin后台 admin.site.register(BookTypeInfo)9、打开 Admin 后台管理系统刷新系统管理主页可以在站点管理 HELLOWORLD 下看到“图书类别信息”点击进入图书类别信息里面可以进行新增、修改、删除等增删改查操作10、例如“添加”操作它是模型直接对应到数据库里面非常的方便快速开发时使用这种方法就很有效率这种方式对于一般情况下的开发就基本已经满足了如若除了增删改查操作还需要其他特殊的设置需求建议使用另一种方式方式二自定义类继承ModelAdmin假如说“增删改查”等操作不满足需求要额外“搜索字段、排序”等复杂一点的业务操作建议使用此种方式11、以 BookInfo 图书类别为例打开“djangoProject”项目“helloWorld”应用下的“admin.py”配置文件输入以下内容自定义类继承ModelAdminclass BookInfoAdmin(admin.ModelAdmin)--自定义类BookInfoAdmin需要继承 ModelAdmin 父类admin.register(BookInfo)--需要在自定义类上加admin.register()里面添加需要注册哪个自定义类里面可以写一些精细化配置信息包括每页大小、过滤条件、显示字段、查询字段、排序等等具体可查看参考ModelAdmin 类源码一般情况下默认设置即可满足可根据业务需求自行精细化设置。from django.contrib import admin from helloWorld.models import BookTypeInfo, BookInfo # Register your models here. 在这注册您的模型 # 方式一将模型直接注册到admin后台 admin.site.register(BookTypeInfo) # 方法二自定义类继承ModelAdmin admin.register(BookInfo) class BookInfoAdmin(admin.ModelAdmin): # 设置显示的字段元组格式 list_display [id, bookName, price, publishDate, bookType]可自行查看 ModelAdmin 类详情信息对模型的增删改查操作做精细化的配置包括显示字段分页可编辑字段查询字段排序等。12、刷新系统管理主页可以在站点管理 HELLOWORLD 下看到“图书信息”自行查看图书信息设置查询搜索13、修改“djangoProject”项目“helloWorld”应用下的“admin.py”配置文件内容设置查询from django.contrib import admin from helloWorld.models import BookTypeInfo, BookInfo # Register your models here. 在这注册您的模型 # 方式一将模型直接注册到admin后台 admin.site.register(BookTypeInfo) # 方法二自定义类继承ModelAdmin admin.register(BookInfo) class BookInfoAdmin(admin.ModelAdmin): # 设置显示的字段元组格式 list_display [id, bookName, price, publishDate, bookType] # 设置查询也是元组格式 search_fields [bookName, publishDate]14、刷新图书信息列表页面建议重新运行项目自行查看可自行按输入查询条件搜索测试Django 内置 Admin 系统首页设置在使用Django5的内置Admin系统时会发现一些默认的设置并不符合实际的业务需求需要自定义设置下例如模块项目管理这块标题默认用了模块项目名称“Django 管理”非常不友好大部分情况都是取名与工作相关的某某网站管理系统、某某企业名称之类的建议设置人性化名称15、修改“djangoProject”项目“helloWorld”应用下的“admin.py”配置文件内容设置网站标题和应用标题from django.contrib import admin from helloWorld.models import BookTypeInfo, BookInfo # Register your models here. 在这注册您的模型 # 方式一将模型直接注册到admin后台 admin.site.register(BookTypeInfo) # 方法二自定义类继承ModelAdmin admin.register(BookInfo) class BookInfoAdmin(admin.ModelAdmin): # 设置显示的字段元组格式 list_display [id, bookName, price, publishDate, bookType] # 设置查询也是元组格式 search_fields [bookName, publishDate] # 设置网站标题--浏览器标题(页面标题title/title中的内容) admin.site.site_title 测试后台管理 # 设置应用标题(首页标语)--首页主标题 admin.site.index_title 图书管理模块 # 设置网站页头--页眉标题(每个管理网页的页头都会出现的标题) admin.site.site_header Django测试网站管理系统16、修改“djangoProject”项目“helloWorld”应用下的“apps.py”配置文件内容配置类中添加“verbose_name”字段数据信息项来更改设置子项目模块名称如若有多个子项目烦请自行设置各个子项目模块名称from django.apps import AppConfig class HelloworldConfig(AppConfig): default_auto_field django.db.models.BigAutoField name helloWorld # 设置子项目模块名称 verbose_name 测试网站图书管理17、重新运行项目登录 Admin 系统打开系统管理主页自行测试查看django 自带后台中verbose_name 后面多个s的问题如果verbose_name 后面没有_plural选项则会在网站上类名后面自动拼接一个‘sDjango 内置 Admin 系统二次开发前面已经实现了 Admin 系统、模型注册、自定义设置但是依然满足不了实际的业务开发需求接下来继续讲解更细致的 Admin 系统二次开发18、首先在Admin后台系统里新建一个普通管理员账号鼠标单击认证和授权下面用户后面的“增加”自定义输入账号密码注意需符合密码设置要求长度至少 8 位密码不能太常见、不能只包含数字、密码和用户名也不能太相似了等例如用户名test02、密码devdev02单击保存按钮19、添加普通管理员用户成功自定义设置相关权限后保存20、使用普通管理员用户 test02 登录系统经测试验证普通管理员用户 test02 能够登录成功设置不可编辑字段 get_readonly_fields()在实际业务开发过程中有时候一些敏感字段不允许普通管理员修改可以通过重写 ModelAdmin 的get_readonly_fields() 方法实现# 重写分类方法设置只读字段 def get_readonly_fields(self, request, objNone): if request.user.is_superuser: self.readonly_fields [] else: self.readonly_fields [bookName] return self.readonly_fields21、修改“djangoProject”项目“helloWorld”应用下的“admin.py”配置文件内容重写 ModelAdmin 的 get_readonly_fields() 方法来设置不可编辑字段from django.contrib import admin from helloWorld.models import BookTypeInfo, BookInfo # Register your models here. 在这注册您的模型 # 方式一将模型直接注册到admin后台 admin.site.register(BookTypeInfo) # 方法二自定义类继承ModelAdmin admin.register(BookInfo) class BookInfoAdmin(admin.ModelAdmin): # 设置显示的字段元组格式 list_display [id, bookName, price, publishDate, bookType] # 设置查询也是元组格式 search_fields [bookName, publishDate] # 重写get_readonly_fields()方法设置只读字段 def get_readonly_fields(self, request, objNone): # 增加判断如果是超级管理员用户 if request.user.is_superuser: # 设置所有字段都可编辑 self.readonly_fields [] else: # 不是超级管理员用户设置某些字段为只读模式 self.readonly_fields [bookName, price, publishDate, bookType] # 因为是get所以最后得return返回 return self.readonly_fields # 设置网站标题--浏览器标题(页面标题title/title中的内容) admin.site.site_title 测试后台管理 # 设置应用标题(首页标语)--首页主标题 admin.site.index_title 图书管理模块 # 设置网站页头--页眉标题(每个管理网页的页头都会出现的标题) admin.site.site_header Django测试网站管理系统22、使用普通管理员用户 test02 登录系统打开修改图书信息页面查看相关字段信息为不可编辑状态设置字段 label 名称为中文打开修改图书信息页面可以看到字段label名称是英文BookName是因为目前还没有设置属性字段的verbose_name 值可以在应用的 models.py 模型文件里添加 verbose_name 配置项23、修改“djangoProject”项目“helloWorld”应用下的“models.py”模型文件内容在BookInfo类里面的字段添加“verbose_name”设置项from django.db import models # Create your models here. class StudentInfo(models.Model): # 新建3个字段第一个字段是 主键id id models.AutoField(primary_keyTrue) name models.CharField(max_length20) age models.IntegerField() # 默认会有个StudentInfo表但是不好所以务必通过Meta属性db_table来指定表名 class Meta: db_table t_student # 先创建BookTypeInfo图书类型类需要继承于models.Model class BookTypeInfo(models.Model): # 定义字段首先定义id是自增主键 id models.AutoField(primary_keyTrue) # 再定义一个bookTypeName字段是CharField类型并指定最大长度20 bookTypeName models.CharField(max_length20) # 定义Meta class Meta: # 指定表名 db_table t_bookType # 给模型取个直观的名字主要是在Django5内置的admin系统里面给它娶个名字以便管理 verbose_name 图书类别信息 # 如果verbose_name 后面没有_plural选项则会在网站上类名后面自动拼接一个‘s verbose_name_plural verbose_name # 使用魔法方法__str__来重写一下打印“bookTypeName”默认打印对象输出图书类别名称 def __str__(self): return self.bookTypeName # 定义BookInfo类依然是继承models.Model class BookInfo(models.Model): id models.AutoField(primary_keyTrue) # 图书名称 bookName models.CharField(max_length20, verbose_name图书名称) # 图书价格 price models.FloatField(verbose_name图书价格) # 出版日期 publishDate models.DateField(verbose_name出版日期) # 定义图书和图书类别的外键关联--bookType对象通过外键值取到图书类别的一个数据对象的封装 bookType models.ForeignKey(BookTypeInfo, on_deletemodels.PROTECT, verbose_name图书类别) class Meta: db_table t_book verbose_name 图书信息 # 如果verbose_name 后面没有_plural选项则会在网站上类名后面自动拼接一个‘s verbose_name_plural 图书信息 # 定义AccountInfo类继承models.Model class AccountInfo(models.Model): # id字段可定义亦可不定义 id models.AutoField(primary_keyTrue) # 定义user用户 user models.CharField(max_length20) # 定义某个用户的账户余额 account models.FloatField() class Meta: # 数据库表名 db_table t_account # 给模型取个直观的名字 verbose_name 用户账户信息24、使用普通管理员用户 test02 登录系统打开修改图书信息页面可以看到相关字段信息已显示为中文设置当然还有很多细粒度设置的方法烦请自行查找官方文档学习了解formfield_for_foreignkey()--设置外键下拉框过滤筛选formfield_for_foreignkey()--重写外键下拉框数据例如增加下拉选项save_model()--添加或者修改处理逻辑重写 可以增加一些日志等处理自定义 Admin 模版Admin 后台管理系统的模版文件是 Django 框架内置提供的可以在源码里找到具体位置在“外部库 → Python 3.XX → Lib → site-packages → django → contrib → admin → templates ” 下级菜单 admin 文件中;在实际开发过程中有很多时候需要修改默认的模版包括程序功能样式等来达到业务需求可以直接修改源码里的模版但是这种方式不好如果一台机器有多个项目会影响其他项目使用所以提倡在项目的模块项目的 templates 目录文件路径下通过优先级来实现修改模版在模块项目的“templates”目录文件路径下新建“admin”目录文件然后在“admin”目录文件创建所需要覆盖的模版名称。25、在“djangoProject”项目“helloWorld”应用“templates”目录文件路径下新建一个名称为“admin名称固定务必叫 admin”的目录文件在新建的 admin 目录文件路径下创建一个需要覆盖的模板名称例如change_form.html 修改图书信息模板注意模板名称相同才能覆盖以测试有效性的出发点来删除源码自定义输入以下内容刷新修改图书页面可以看已经更改了说明这种方式是有效的{% extends admin/base_site.html %} {% load i18n admin_urls static admin_modify %} {% block extrahead %}{{ block.super }} script src{% url admin:jsi18n %}/script {{ media }} {% endblock %}烦请自行测试验证最后注意测试过后记得还原或者可直接删除新创建的change_form.html 模板文件这样就不会优先取模块项目应用路径下的模板文件了以下 change_form.html 模板源码可供参考。{% extends admin/base_site.html %} {% load i18n admin_urls static admin_modify %} {% block extrahead %}{{ block.super }} script src{% url admin:jsi18n %}/script {{ media }} {% endblock %} {% block extrastyle %}{{ block.super }}link relstylesheet href{% static admin/css/forms.css %}{% endblock %} {% block coltype %}colM{% endblock %} {% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} change-form{% endblock %} {% if not is_popup %} {% block breadcrumbs %} div classbreadcrumbs a href{% url admin:index %}{% translate Home %}/a rsaquo; a href{% url admin:app_list app_labelopts.app_label %}{{ opts.app_config.verbose_name }}/a rsaquo; {% if has_view_permission %}a href{% url opts|admin_urlname:changelist %}{{ opts.verbose_name_plural|capfirst }}/a{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %} rsaquo; {% if add %}{% blocktranslate with nameopts.verbose_name %}Add {{ name }}{% endblocktranslate %}{% else %}{{ original|truncatewords:18 }}{% endif %} /div {% endblock %} {% endif %} {% block content %}div idcontent-main {% block object-tools %} {% if change and not is_popup %} ul classobject-tools {% block object-tools-items %} {% change_form_object_tools %} {% endblock %} /ul {% endif %} {% endblock %} form {% if has_file_field %}enctypemultipart/form-data {% endif %}{% if form_url %}action{{ form_url }} {% endif %}methodpost id{{ opts.model_name }}_form novalidate{% csrf_token %}{% block form_top %}{% endblock %} div {% if is_popup %}input typehidden name{{ is_popup_var }} value1{% endif %} {% if to_field %}input typehidden name{{ to_field_var }} value{{ to_field }}{% endif %} {% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %} {% if errors %} p classerrornote {% blocktranslate count countererrors|length %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktranslate %} /p {{ adminform.form.non_field_errors }} {% endif %} {% block field_sets %} {% for fieldset in adminform %} {% include admin/includes/fieldset.html %} {% endfor %} {% endblock %} {% block after_field_sets %}{% endblock %} {% block inline_field_sets %} {% for inline_admin_formset in inline_admin_formsets %} {% include inline_admin_formset.opts.template %} {% endfor %} {% endblock %} {% block after_related_objects %}{% endblock %} {% block submit_buttons_bottom %}{% submit_row %}{% endblock %} {% block admin_change_form_document_ready %} script iddjango-admin-form-add-constants src{% static admin/js/change_form.js %} {% if adminform and add %} >未完待续......

相关新闻

Orca:多AI代理并行编排与可视化管理的开源ADE实战指南

Orca:多AI代理并行编排与可视化管理的开源ADE实战指南

1. 当多个AI代理同时干活时,混乱从哪里开始先说一个我自己的真实场景。上个月我接了个小需求:把一批产品评论做情感分类,同时还要从评论里抽取提到的功能点,最后生成一份汇总报告。听起来不复杂,但我当时手上跑着三个不…

2026/10/15 9:36:31 阅读更多 →
OneNET NB-IoT接入实战:LwM2M与CoAP选型、AT指令配置与避坑指南

OneNET NB-IoT接入实战:LwM2M与CoAP选型、AT指令配置与避坑指南

简介:这份《OneNET平台NB-IOT接入开发文档》由中移物联网有限公司编写,面向使用OneNET平台进行NB-IoT设备接入与第三方应用开发的工程师及物联网学习者,帮助解决从终端SDK移植、设备登录到平台数据交互全流程中的技术疑问。资源包为1个docx文…

2026/10/15 9:36:31 阅读更多 →
企业资源再分配与价值重构:余行补位战略解析

企业资源再分配与价值重构:余行补位战略解析

1. 战略背景与核心逻辑"余行补位"战略的本质是企业资源再分配与价值重构的过程。当主营业务增长放缓时,企业往往面临两种选择:要么在红海市场中继续内卷,要么开辟新战场。这个战略选择后者,但并非盲目多元化&#xff0c…

2026/10/15 9:36:31 阅读更多 →

最新新闻

车辆稳定性分析与相平面法Matlab实现

车辆稳定性分析与相平面法Matlab实现

1. 项目背景与核心价值车辆稳定性分析是汽车动力学研究的核心课题之一。在紧急避障或高速过弯工况下,驾驶员最直接的体感就是车辆是否"听话"——专业术语称为横摆稳定性。传统单指标分析往往难以全面反映车辆动态特性,而相平面分析法通过构建质…

2026/10/15 10:16:15 阅读更多 →
单元化多活架构下的路由穿透治理:Sharding Key 绑定与跨机房 RPC 拦截

单元化多活架构下的路由穿透治理:Sharding Key 绑定与跨机房 RPC 拦截

在大型互联网交易系统向“三地五中心”单元化异地多活(Cell Architecture)演进的征途上,架构师最害怕的往往不是某个机房被整体挖断光缆这种“显性灾难”,而是一种无声无息寄生在代码调用链中的“隐性慢性毒药”——跨单元路由穿透…

2026/10/15 10:16:15 阅读更多 →
为什么异构DDL不能原样执行?KFS类型映射与语法重构解析

为什么异构DDL不能原样执行?KFS类型映射与语法重构解析

在某大型医院的数据同步项目中,260条同步链路同时运行,源端涉及Oracle、MySQL、SQL Server、KES V8R6、Vastbase等10多种数据库,并持续向目标库汇聚数据。 在这样的环境里,把数据同步过去并不难。真正让链路“卡住”的&#xff0c…

2026/10/15 10:16:15 阅读更多 →
反向海淘代购系统开发实录:从业务链路到可运行代码

反向海淘代购系统开发实录:从业务链路到可运行代码

从"人工一单一询"到"全链路自动化流水线",中间隔着的不是业务想象力,而是十几个必须做对的技术决策。这篇文章把一套反向海淘代购系统的架构、核心模块和踩坑点一次性讲透,代码可直接运行。一、先定义问题:反…

2026/10/15 10:16:15 阅读更多 →
AI 第一次同时给出账本和传票:Anthropic 报出 168 亿美元季度收入,八个州把 OpenAI 告了

AI 第一次同时给出账本和传票:Anthropic 报出 168 亿美元季度收入,八个州把 OpenAI 告了

数据口径:2026-10-13 至 10-15 的公开信息(整理时间以数据源最新可核日期为准)。均为聚合站点单源条目,未经一手核实的标"据报道";与前几篇重复的结论(agent 最小权限、星数刷量识别、小模型降本…

2026/10/15 10:16:15 阅读更多 →
新能源汽车热管理系统Simulink建模与仿真实践

新能源汽车热管理系统Simulink建模与仿真实践

1. 项目背景与核心价值在新能源汽车快速发展的今天,热管理系统设计正面临前所未有的挑战。传统燃油车的热管理相对简单,主要关注发动机冷却和空调系统。而电动车和混合动力车型需要管理电池、电机、电控等多套系统的热交换,还要兼顾不同驱动模…

2026/10/15 10:15:14 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →