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

相关推荐
Hello.Reader1 分钟前
深入理解 Rust 的 `Rc<T>`:实现多所有权的智能指针
开发语言·后端·rust
浪九天1 分钟前
Orcale、MySQL中参数类型的详解和运用场景(不带示例)
数据库·mysql·oracle
程序员阿鹏4 分钟前
jdbc批量插入数据到MySQL
java·开发语言·数据库·mysql·intellij-idea
yoona10204 分钟前
Rust编程语言入门教程(八)所有权 Stack vs Heap
开发语言·后端·rust·区块链·学习方法
莲动渔舟6 分钟前
国产编辑器EverEdit - 在编辑器中对文本进行排序
java·开发语言·编辑器
伊一大数据&人工智能学习日志12 分钟前
自然语言处理NLP 04案例——苏宁易购优质评论与差评分析
人工智能·python·机器学习·自然语言处理·数据挖掘
刀客12317 分钟前
python3+TensorFlow 2.x(六)自编码器
人工智能·python·tensorflow
微刻时光18 分钟前
影刀RPA中级证书-Excel进阶-开票清单
经验分享·python·低代码·rpa·影刀·影刀证书·影刀实战
一朵小花34 分钟前
Python中with的用法
python
滴_咕噜咕噜40 分钟前
C#基础总结:常用的数据结构
开发语言·数据结构·c#