用django-pipeline为静态文件添加hash

Django项目Azure DevOps CI/CD流水线实战指南 Django作为主流Python Web框架,其生产部署长期面临环境不一致、静态资源管理混乱、数据库迁移不可控等共性挑战。CI/CD自动化本质是将部署逻辑代码化、可审计、可回滚的过程,核心在于标准化Python依赖管理、解耦开发与生产配置、实现静态文件与数据库迁移的确定性执行。Azure DevOps YAML流水线凭借基础设施即代码(IaC)特性,天然适配Django项目的版本敏感性与多环境差异;结合Ubuntu-20.04稳定基线、App Service PaaS托管能力及requirements.tx 阅读详情

用django-pipeline为静态文件添加hash

为什么需要hash静态文件?

请看大公司里怎样开发和部署前端代码? 张云龙的答案。

这样,当静态文件有修改时,会很方便的拿到最新的修改版本,而未修改的静态文件则依然使用缓存。这样避免了修改后用户静态文件不更新的尴尬,并且可以充分利用缓存。

demo

django_pipeline_demo

安装

sudo mkdir /opt/projects
git clone https://github.com/duoduo369/django_pipeline_demo.git
cd django_pipeline_demo
ln -s $(pwd) /opt/projects
ln -s /opt/projects/django_pipeline_demo/deploy/nginx/django_pipeline.conf /etc/nginx/sites-enabled
pip install -r requirements.txt
python manage.py runserver 0.0.0.0:9888
nginx -s reload
vim /etc/hosts 添加 127.0.0.1:9888 django_pipline_demo.com

django的库pipeline

mako, django-mako, django-pipeline-demo

效果是这样的,以 django_pipeline_demo 为例。

先说最终用法

  1. debug必须为False(上线本来就是False),如果为True则使用django默认查找静态文件的方式,不会使用pipeline。
  2. python manage.py collectstatic
  3. 重启django项目

重点代码解释

settings.py的几个配置,
如何安装配置django-pipeline,请移步文档.

解释几个collect有关的配置

# python manage.py collectstatic 后文件会扔到STATIC_ROOT下面
STATIC_ROOT = './statics'

# django的模板会从这些目录下查找
TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, 'templates'),
)

# 开发时css的路径,collectstatic会从这里查找然后丢到STATIC_ROOT下
# 使用pipeline后会在静态文件中添加hash码,例如css/index.css
# collectstatic后会变成 css/index.as1df14jah8dfh.css
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static_dev"),
)

templates/common/static_pipeline.html

这是用mako定义了一个url,以后静态文件使用这个url导入,就可以找到hash的版本了。

<%!
from django.contrib.staticfiles.storage import staticfiles_storage
%>

<%def name='url(file)'><%
try:
    url = staticfiles_storage.url(file)
except:
    url = file
%>${url}</%def>

index.html

首先导入/common/static_pipeline.html,需要引用静态文件的地方使用${static.url('未hash的文件路径')}

<%namespace name='static' file='/common/static_pipeline.html'/>
....
    <link rel="stylesheet" href="${static.url('css/index.css')}" type="text/css" media="all" />
....
Plone迁移到Django+Wagtail实战指南:内容建模、StreamField与高可用部署 内容管理系统(CMS)迁移是企业数字化演进的关键环节,其核心在于平衡内容主权、编辑体验与工程可维护性。Django作为成熟Python Web框架,提供清晰的ORM、安全中间件和标准化开发流程;Wagtail则在其之上构建出面向内容工程师的现代化内容层——通过Page树形模型实现栏目体系自动路由,以StreamField支持结构化富文本编排,并深度集成Django权限与搜索生态。该技术组合显著降低定制成本、提升CI/CD友好度,广泛适用于政务网站、高校知识库及中大型内容平台等需长期演进的场景。本文聚焦Plo 阅读详情

相关推荐

Pyramid生产部署实战:WSGI配置、连接池与systemd托管全解析

Web应用程序部署本质上是将Python应用通过WSGI协议交付给生产环境服务器的过程。理解WSGI规范是基础,它定义了应用与服务器之间的标准化接口;而Pyramid作为遵循Paste Deploy标准的框架,其部署核心在于正确解析INI配置、管理模块加载路径与进程生命周期。技术价值体现在稳定性、安全审计合规性与基础设施集成能力——例如通过systemd实现服务自愈、用SQLAlchemy连接池调优保障高并发TPS、以分层日志满足等保三级要求。典型应用场景包括金融风控API、医疗数据中台及政务公开平台等需7

weixin_33739627的博客 384

pipeline 操作 Redis 数据库

pipeline的介绍 管道 pipeline 可以一次性发送多条命令并在执行完后一次性将结果返回。 pipeline通过减少客户端与Redis的通信次数来实现降低往返延时时间。 实现的原理 实现的原理是队列. Client可以将三个命令放到一个tcp报文一起发送。 Server则可以将三条命令的处理结果放到一个tcp报文返回。 队列是先进先出,这样就保证数据的顺序性。 pipeli...

weixin_30519071的博客 215

LoRA模型API安全部署实战:密钥管理与访问控制全解析

在AI模型部署领域,API密钥管理与访问控制是保障服务安全的核心机制。其原理在于通过身份认证与授权体系,对API调用进行精细化管控,防止未授权访问与资源滥用。这一技术的核心价值在于保护模型服务免受恶意攻击,确保服务稳定性并控制运营成本。在应用场景上,尤其适用于需要对外开放的AI绘画、大语言模型等生成式AI服务。本文以Qwen-Image-2512-Pixel-Art-LoRA模型为例,深入探讨如何构建分层防御体系,其中API密钥的全生命周期管理和访问控制列表的精细化实施是关键环节,能有效应对Docker安装

weixin_34174322的博客 568

【django】pipeline操作redis数据库【18】

Redis 的 C / S 架构: 基于客户端-服务端模型以及请求/响应协议的TCP服务。 客户端向服务端发送⼀个查询请求,并监听Socket返回。 通常是以阻塞模式,等待服务端响应。 服务端处理命令,并将结果返回给客户端。 存在的问题: 如果Redis服务端需要同时处理多个请求,加上⽹络延迟,那么服务端利⽤率不⾼,效率降低。 解决的办法 管道pipeline 一、pipeline的介绍 管道pipeline 可以⼀次性发送多条命令并在执⾏完后⼀次性将结果返回。 pipeline通过减少客户端与Redis的

python全栈 714

京东商品比价系统:Python+Django工程化实践指南

电商价格监控系统是典型的数据采集与分析工程,其核心在于稳定获取动态渲染页面、精准归一化多源SKU、构建可扩展的价格波动分析模型。基于Python生态的requests/lxml/selenium实现分层爬取,结合Django的ORM建模、任务调度与Admin管理能力,形成从数据抓取、清洗、存储到可视化决策的完整闭环。本方案直面京东反爬机制(滑块验证、JS渲染、异步加载),通过Cookie复用、贝塞尔轨迹模拟、SPU主键归一化等关键技术,保障高可用与高精度。适用于毕业设计落地、运营价格监控及后端工程能力进阶,

weixin_33834137的博客 383

Python广度优先搜索BFS - 蓝桥13届省赛污染海域

请问这片N * M海域中有几块是没被污染的独立海域(没被污染的独立海域是指该块海域上下左右被已污染的海域包围,且N * M以外的海域都为已被污染的海域)有一片海域划分为N * M个方格,其中有些海域已被污染(用0表示),有些海域没被污染(用1表示)。第二行开始输入N行,每行M个数字(数字只能为1或者0,1表示没被污染的海域,0表示已被污染的海域)这块4 * 5的海域,有3块海域(绿色)没被污染,因为每一块的上下左右都被污染的海域包围。输出一个整数,表示N * M的海域中有几块是没被污染的独立海域。

m0_69865359的博客 264

Django 工作流程

https://segmentfault.com/a/1190000002447511在开始具体的代码之旅前,先来宏观地看下Django是如何处理Http Resquest的,如下图:假设你已经在浏览器输入了 http://127.0.0.1:8000/polls/,接下来浏览器会把请求交给Django处理。根据上图,我们知道Django需要根据url来决定交给谁来处理请求,那么Django是如何完

一个程序员的成长之路。。。 4763

告别手动打点计时:用Lauterbach TRACE32的RunTime功能,5分钟搞定嵌入式代码段性能分析

本文深入解析了Lauterbach TRACE32的RunTime功能在嵌入式代码性能分析中的革命性应用。通过硬件级计时原理和非侵入式设计,该功能能快速精确测量代码执行时间,显著提升开发效率,特别适用于汽车电子和工业控制领域。文章还提供了从基础设置到高级分析的完整实战指南,帮助工程师轻松掌握这一强大工具。

weixin_30615767的博客 277

基于Django的智能招聘推荐系统设计与实现

智能推荐系统是现代信息技术中的重要应用,通过算法模型实现用户与资源的精准匹配。其核心原理包括特征提取、相似度计算和动态权重调整等技术。在工程实践中,这类系统能显著提升信息匹配效率,广泛应用于电商、内容平台和招聘领域。本文介绍的智能招聘推荐系统采用Django框架开发,创新性地结合教育数据特异性处理和动态权重调整机制,实现了学生与岗位的高效匹配。系统使用改进的余弦相似度算法,并引入Redis缓存和WebSocket实时通信等关键技术,在高校就业场景中取得了签约率提升27%的显著效果。

weixin_30897079的博客 395

BIM模型导入SuperMap

目录 一、超图 BIM插件安装 1.1 插件下载 1.2 安装 二、BIM模型导出 2.1 Revit插件导出 2.2 SuperMap导入工具 三、SuperMap BIM数据处理与服务发布 四、SuperMap三维数据处理中关于模型高程修改方法 一、超图 BIM插件安装 1.1 插件下载 下载链接:http://support.supermap.com.cn/DownloadCenter/DownloadPage.aspx?tt=ProductAAS&id=134 1..

爱晒太阳的风 3596

Robocorp+Robot Framework学习记录【初学者课程:一级课程】

以下内容均来自:https://robotframework.org/?tab=2#getting-started。通过官网的学习和本地实际安装使用体验而来,本文仅记录学习过程。 Robot Framework介绍 Robot Framework 是一个通用的开源自动化框架。它可用于测试自动化和机器人过程自动化 (RPA)。 Robot Framework环境配置及安装 具体请见:Win10环境下安装pytho、pip与Robot Framework 学习过程与等级划分 官方认为Robot Framew.

OwenDom的博客 5373

Python安全编程实战:从注入防御到密码哈希的100天生存指南

在软件开发领域,安全编程是保障应用稳健运行的基石。其核心原理在于通过系统化的防御策略,将安全思维融入开发全生命周期,从而有效抵御外部威胁。从技术价值角度看,安全编程不仅能防止数据泄露、服务中断等直接损失,更能维护用户信任和品牌声誉。在应用场景上,无论是Web开发、数据处理还是自动化脚本,只要涉及用户输入、网络交互或敏感操作,都需要严格的安全实践。本文聚焦Python开发中的高频安全漏洞,深入探讨SQL注入、命令注入等常见攻击的防御机制,并详解如何使用参数化查询、输入验证白名单、密码哈希等技术手段构建安全防线

weixin_30781775的博客 368

统信UOS/麒麟ARM桌面版,不联网也能用Docker部署MySQL 5.7(离线部署详解)

本文详细介绍了在统信UOS/银河麒麟ARM桌面版系统中,如何离线部署MySQL 5.7的完整流程。通过Docker技术实现环境隔离和依赖封装,解决了封闭网络环境下的部署难题,包括资源准备、系统配置、容器化部署及安全加固等关键步骤,为政企和科研场景提供实用解决方案。

weixin_30892037的博客 227

基于Django的无人驾驶网约车调度系统设计与实现

智能交通系统中的车辆调度算法是优化出行效率的核心技术,其本质是通过实时数据处理与空间计算实现资源最优分配。Django框架凭借其ORM系统和高扩展性,成为开发此类系统的理想选择,特别是处理地理空间数据时,PostGIS扩展与Redis缓存能有效提升性能。在无人驾驶场景下,调度系统需要综合考量车辆电量、路况预测等多维度因素,这比传统网约车系统更具挑战性。本文通过一个实际项目案例,详解如何利用Django REST framework构建高并发调度API,并采用Celery实现分布式任务队列,为智能交通领域的开

424

操作不能完成 (错误 0x00000709) 共享打印机无法连接解决办法

环境:windows Server 2012 + Win10 客户端 问题:使用计算机名和IP地址可以正常连接打印机,但是使用另外的A记录或CN记录无法连接,报此错误 原因:这是打印服务DNS解析的问题 故障补充:假设你的服务器电脑名称叫print01,但是你又建了一条A记录或者CNname 叫PR01,就会发现使用额外的A记录或CN记录就无法连接 故障截图: 操作不能完成 (错误...

瑞哥的博客 3万+

LLaVA-1.5:多模态视觉问答新突破

LLaVA-1.5在多模态视觉问答(VQA)任务中取得了显著进展,主要得益于视觉-语言连接器的优化和特定任务数据集的增加。通过将连接器升级为两层MLP,模型在处理视觉与语言关系时表现更佳。同时,引入如OKVQA、OCRVQA等数据集,增强了模型在复杂视觉推理任务中的能力。在11个基准测试中,LLaVA-1.5超越了现有方法,展示了其强大的多模态能力。此外,模型通过提升输入图像分辨率、扩展语言模型和改进多语言能力,进一步提升了性能。尽管在短格式回答任务中初期表现不佳,但通过调整提示格式和微调,其性能显著提升

weixin_57060548的博客 945

Python数据采集与Django可视化:构建游客行为分析平台完整指南

数据采集与分析是现代数字化转型的核心技术,其原理是通过系统化方法从各种数据源获取信息并转化为有价值的洞察。在技术实现上,Python凭借其丰富的数据科学生态成为首选工具,Scrapy框架提供了高效的网络爬虫能力,能够自动化采集结构化数据。这种技术组合的价值在于能够替代传统手工数据收集,实现大规模、高效率的信息获取。在旅游行业应用场景中,通过采集游客评论、评分等行为数据,结合Pandas进行数据清洗和特征提取,可以深入分析游客偏好和消费模式。本文以Django框架构建可视化平台为例,展示如何将采集到的数据通过

weixin_30444105的博客 388

数据分析案例-2024 年全电动汽车数据集可视化分析

本数据集来源于Kaggle,原始数据集共有177866条数据,17个变量。该数据集显示了目前通过华盛顿州许可部 (DOL) 注册的电池电动汽车 (BEV) 和插电式混合动力电动汽车 (PHEV)。电池电动汽车 (BEV) 是一种全电动汽车,使用一个或多个电池来存储电能,为电机提供动力,并通过将车辆插入电源进行充电。插电式混合动力汽车 (PHEV) 是一种使用一个或多个电池为电动机提供动力的车辆;使用另一种燃料,例如汽油或柴油,为内燃机或其他推进源提供动力;并通过将车辆插入电源来充电。

m0_64336780的博客 1万+

基于Django与Vue的电影评论情感分析系统开发实践

情感分析是自然语言处理(NLP)的重要应用领域,通过机器学习算法自动识别文本中的情感倾向。本文以电影评论分析为场景,详细讲解如何构建完整的Web数据分析系统。系统采用Django作为后端框架,利用其ORM和REST API支持高效处理评论数据;前端使用Vue.js实现动态可视化展示,包括情感分布饼图和关键词词云。技术方案涵盖从数据采集(Scrapy爬虫)、情感分析(预训练模型与自定义模型)到性能优化(数据库查询优化与缓存策略)的全流程实践,为开发者提供了一套可复用的情感分析系统架构方案。

weixin_34411563的博客 344

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Python 学习 ---> 模块、pypi ( 模块库 )、添加模块路径

什么是 模块 在 Python 中,一个.py文件就是一个模块(Module)。模块的名字就是文件的名字。在模块内部,通过全局变量__name__可以获取模块名(即字符串) 模块作用 为了实现代码的复用,通常会把一些其他程序中重用的代码拿出来单独放在一个程序文件中,

freeking101的博客 3480

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

开发字典

Python Web开发 – 集成百科 文章目录Python Web开发 -- 集成百科@[toc]WEB开发框架(Django + Flask + 通用第三方)Flask相关知识虚拟环境创建Flask的应用对象配置参数Flask的数据库设置蓝图Blueprint蓝图:用于实现单个应用的视图、模版、静态文件的集合。蓝图的运行机制:蓝图的使用Django相关知识Django的安装官网文档安装Djan...

weixin_45263534的博客 1289

Jenkins集成部署实战:从插件配置到构建回滚的完整指南

持续集成是团队协作中提升交付效率的基础实践,核心是通过自动化流水线把代码提交、构建、测试与发布串成闭环。掌握其底层链路,不仅能让交付过程更稳定,也为后续故障恢复提供了可控抓手。实际落地时常面临插件下载失败、远程传输失败、环境变量不一致等挑战,尤其当构建产物需要跨服务器分发、异常版本需要快速回滚时,单纯的安装教程远远不够。本文以 Jenkins 为对象,梳理从环境初始化、插件镜像配置到自由风格任务与流水线选择的完整路径,并针对 Java、Python、Windows 前后端分离项目的部署与回滚给出可复用方法,

weixin_33858336的博客 417

从本地到云端:Python+Vue+MySQL+Nginx项目完整部署指南

Web应用部署是将开发环境中的代码迁移到标准化、可运维的生产环境的关键过程,其核心在于建立一套可重复的工程化流程。理解其原理,需要从Web应用的基本架构入手:前端代码需经过构建(Build)生成静态资源,由Nginx等Web服务器高效托管;后端应用则需通过Gunicorn、uWSGI等应用服务器处理动态请求,并通过WSGI/ASGI接口与框架交互。这一流程的技术价值在于解决了环境差异、依赖管理、服务配置等核心难题,确保了应用在线上环境的稳定性、安全性和可扩展性。其典型应用场景涵盖了从个人项目到企业级服务的各

weixin_33744141的博客 421

Bark-Worker开发者指南:Wrangler本地调试、D1迁移与node --test兼容性测试完全教程

Bark-Worker 是运行在 Cloudflare Worker 上的 Bark 推送通知服务器(Bark-Server 实现),为 iOS 用户提供低成本、私密的自建推送后端。本文是一份面向初学者的完整开发者指南,带你掌握三件核心开发工作:**Wrangler 本地调试**、**D1 数据库迁移**,以及用 **node --test** 编写兼容性测试,让你从拉取代码到上线部署全程有据可依

gitblog_00429的博客 162
上一篇: 极客Web前端开发资源大荟萃#004
下一篇: 纯HTML5绘制的七巧板
formyth
博客等级 码龄17年 9粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值