Django 中链接静态文件目录

将静态文件存放在单独的目录中,使得 Django 可以有效地提供这些静态资源,如图片、CSS 文件、JavaScript 文件等,给用户的浏览器。在部署项目时,可以通过收集静态文件到一个单独的目录,然后将该目录服务于静态文件的 Web 服务器或者 CDN,从而更轻松地部署静态文件。那么对于在使用中我们经常遇到的问题,可以尝试着我这种解决方法。

在这里插入图片描述

1、问题背景

在 Django 中,有多个目录用于存储静态文件,每个应用程序都有自己的静态文件目录,便于模块化管理。为了能够访问所有应用程序的静态文件目录,需要修改 settings.py 文件。

以下是我的目录结构:

|-- assets                                // 静态文件目录,命名为 'assets'
|   |-- css
|   |   |-- bootstrap.css
|   |   |-- bootstrap.min.css
|   |   |-- bootstrap-responsive.css
|   |   |-- bootstrap-responsive.min.css
|   |   `-- login.css
|   |-- img
|   |   |-- glyphicons-halflings.png
|   |   `-- glyphicons-halflings-white.png
|   `-- js
|       |-- bootstrap.js
|       |-- bootstrap.min.js
|       `-- jquery-1.9.1.min.js|-- initial                                // 项目名称
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- settings.py
|   |-- settings.pyc
|   |-- urls.py
|   |-- urls.pyc
|   |-- wsgi.py
|   `-- wsgi.pyc
|-- manage.py
|-- models.py
|-- modules                               // 应用程序目录,命名为 'modules'
|   |-- dashboard
|   |   |-- __init__.py
|   |   |-- __init__.pyc
|   |   |-- models.py
|   |   |-- models.pyc
|   |   |-- static                        // dashboard 应用程序中的静态文件目录
|   |   |   |-- css
|   |   |   |-- img
|   |   |   `-- js
|   |   |       `-- dashboard.js
|   |   |-- templates                        // dashboard 应用程序中的模板目录
|   |   |   `-- dashboard
|   |   |       `-- dashboard.html
|   |   |-- tests.py
|   |   |-- urls.py
|   |   |-- urls.pyc
|   |   |-- views.py
|   |   `-- views.pyc
|   |-- login                             // login 应用程序
|   |   |-- forms.py
|   |   |-- forms.pyc
|   |   |-- __init__.py
|   |   |-- __init__.pyc
|   |   |-- models.py
|   |   |-- models.pyc
|   |   |-- static
|   |   |   |-- css
|   |   |   |   `-- login.css
|   |   |   |-- img
|   |   |   `-- js
|   |   |-- templates
|   |   |   |-- auth
|   |   |   |   |-- login.html
|   |   |   |   |-- logout.html
|   |   |   |   `-- register.html
|   |   |   `-- registration
|   |   |       `-- login.html
|   |   |-- tests.py
|   |   |-- urls.py
|   |   |-- urls.pyc
|   |   |-- views.py
|   |   `-- views.pyc`-- templates                           // 基础模板目录|-- base1.html|-- base2.html`-- registration`-- login.html

以下是 settings.py 文件,当所有静态文件都在一个目录下时:

MEDIA_ROOT = os.path.normpath( os.path.join(os.path.dirname(__file__), '../assets/'))MEDIA_URL = ''STATIC_ROOT = ''STATIC_URL = '/assets/'

以下是 settings.py 文件,当所有静态文件都在各自的模块/应用程序下时:

MEDIA_ROOT = (os.path.normpath( os.path.join(os.path.dirname(__file__), '../assets/')),os.path.normpath( os.path.join(os.path.dirname(__file__), '../modules/dashboard/static/')),os.path.normpath( os.path.join(os.path.dirname(__file__), '../modules/login/static/')),)MEDIA_URL = ''STATIC_ROOT = ''STATIC_URL = '/assets/'

2、解决方案

  1. 按照 Django 文档中列出的步骤操作:https://docs.djangoproject.com/en/dev/howto/static-files/。
  2. 最重要的一步是:将静态文件存储在应用程序的 static 文件夹中。例如:my_app/static/my_app/myimage.jpg
  3. 将 assets 文件夹更名为 static。

过将静态文件放置在单独的静态文件目录,并利用 Web 服务器(如 Nginx、Apache 等)或者 CDN(内容分发网络)来提供静态文件服务,可以有效提高网站的性能和加载速度。总体来说,链接静态文件目录可以提高项目的结构清晰度、开发效率,并有助于提升网站的性能和用户体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/669513.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IP地址类型

这些IP地址中有IPv4和IPv6地址,以及一些是链路本地地址(通常用于本地网络中的通信),而另一些则是可以被路由的公共或私有IP地址。 这里是您提供的IP地址的一些简要说明: IPv6 链路本地地址:以fe80:开头的地址是IPv6链路本地地址。这些地址仅用于同一链路(如以太网段或无…

外贸工厂玩转TikTok高效获客,多种引流方式/账号定位/爆款打造/全方位讲解

课程亮点 讲解工厂爆款账号打造技巧,每月实现近1000的询盘 掌握多种引流方式,实现快速搭建流量池 全方位讲解如何抢占行业标签,抢占TikTok流量红利 讲解打造短视频爆款技巧,高效获客 课程大纲 导言:课程介绍 传统外贸获客渠…

java基础之Netty(主要用来开发像微信,qq等聊天软件)

一、Netty的定义 Netty是一个基于Java NIO的网络编程框架,提供了一套高效的、事件驱动的异步网络通信机制。简化了网络应用程序的开发过程,提供了可靠的、高性能的网络传输 二、Netty的特点是什么 异步和事件驱动:Netty使用异步的、非阻塞…

Redis 实战之客户端属性

客户端属性 套接字描述符名字标志输入缓冲区命令与命令参数命令的实现函数输出缓冲区身份验证时间总结 客户端状态包含的属性可以分为两类: 一类是比较通用的属性, 这些属性很少与特定功能相关, 无论客户端执行的是什么工作, 它们…

PSFR-GAN复现

写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 前言快速开始安装依赖权重下载及复原 训练网络数据集训练脚本 代码详解训练BaseOptio…

Windows平台通过MobaXterm远程登录安装在VMware上的Linux系统(CentOS)

MobaXterm是一个功能强大的远程计算工具,它提供了一个综合的远程终端和图形化的X11服务器。MobaXterm旨在简化远程计算任务,提供了许多有用的功能,使远程访问和管理远程服务器变得更加方便,它提供了一个强大的终端模拟器&#xff…

Python深度学习基于Tensorflow(1)Numpy基础

numpy的重要性不言而喻,一般不涉及到GPU/TPU计算,都是用numpy,常见的np就是这个玩意。其特点就是快!其实如果不涉及到深度学习,还有一个库是很重要的,scipy,集成了很多的东西。 安装和导入如下…

【考研数学】只做《1800》和真题,能不能考90分?

网上的经验贴推荐的习题册,说自己刷完以后最后考了130 你以为自己也能和大佬一样,刷完数学也能考那么高 但实际上很多人是1800、660、880刷题刷下来最后考了四五十的 他们也不会在网上说 刷题多少,或者是刷哪一本习题册并不能衡量你最后能…

你真的知道Show Master Status吗?

欢迎来到我的博客,代码的世界里,每一行都是一个故事 你真的知道Show Master Status吗? 前言输出字段展示file详解Position详解Binlog_Do_DBBinlog_Ignore_DBExecuted_Gtid_Set 前言 在数据库的世界里,每一个字段都像是一个谜团&a…

【NI国产替代】USB-4432 102.4 kS/s , 100 dB , 0.8 Hz AC/DC耦合,5输入声音与振动设备

102.4 kS/s , 100 dB , 0.8 Hz AC/DC耦合,5输入声音与振动设备 USB-4432专为声音和振动应用而设计。输入通道集成了用于加速度计和麦克风的集成电子压电(IEPE)信号调理功能,并具有内置的抗混叠滤波器,可自动调整至采样率。第五个输入通道不提…

强烈推荐gradle统一版本管理新方式version catalogs

https://developer.android.google.cn/build/migrate-to-catalogs?hlzh-cn#groovy 以前都是通过自定义config.gradle, 然后apply它,有一个弊端就是无法提示新版本可以升级。比如这个: 在gradle7.0 preview了新功能,现在默认稳定了。 尝试…

论文笔记:DeepMove: Predicting Human Mobility with Attentional Recurrent Networks

WWW 2018 1 Intro 根据对百万级用户群的研究,93%的人类移动是可预测的。 早期的mobility预测方法大多基于模式的。 首先从轨迹中发现预定义的移动模式(顺序模式、周期模式)然后基于这些提取的模式预测未来位置。最近的发展转向基于模型的方法进行流动性预测。 利用…