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 文件,当所有静态文件都在一个目录下时:

python 复制代码
MEDIA_ROOT = os.path.normpath( os.path.join(os.path.dirname(__file__), '../assets/'))

MEDIA_URL = ''

STATIC_ROOT = ''

STATIC_URL = '/assets/'

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

python 复制代码
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(内容分发网络)来提供静态文件服务,可以有效提高网站的性能和加载速度。总体来说,链接静态文件目录可以提高项目的结构清晰度、开发效率,并有助于提升网站的性能和用户体验。

相关推荐
2301_797312261 分钟前
学习java37天
开发语言·python
幽络源小助理3 分钟前
SpringBoot+小程序高校素拓分管理系统源码 – 幽络源免费分享
spring boot·后端·小程序
xifangge20253 分钟前
PHP 接口跨域调试完整解决方案附源码(从 0 到定位问题)
开发语言·php
程序员爱钓鱼3 分钟前
Node.js 编程实战:测试与调试 —— 日志与监控方案
前端·后端·node.js
go_bai4 分钟前
Linux-网络基础
linux·开发语言·网络·笔记·学习方法·笔记总结
雄大8 分钟前
使用 QWebChannel 实现 JS 与 C++ 双向通信(超详细 + 踩坑总结 + Demo)
后端
计算机学姐9 分钟前
基于SpringBoot的汉服租赁系统【颜色尺码套装+个性化推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·mysql·信息可视化·推荐算法
WJSKad123510 分钟前
果园树干识别与定位_faster-rcnn_x101-32x4d_fpn_1x_coco改进实践
python
深蓝电商API10 分钟前
Scrapy中间件实战:自定义请求头和代理池实现
python·scrapy·中间件
回家路上绕了弯10 分钟前
定期归档历史数据实战指南:从方案设计到落地优化
分布式·后端