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

相关推荐
PieroPc1 分钟前
Python 写的 智慧记 进销存 辅助 程序 导入导出 excel 可打印
开发语言·python·excel
云和数据.ChenGuang1 小时前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys2 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
Hacker_LaoYi2 小时前
SQL注入的那些面试题总结
数据库·sql
2401_857439693 小时前
SSM 架构下 Vue 电脑测评系统:为电脑性能评估赋能
开发语言·php
建投数据3 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
SoraLuna3 小时前
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
开发语言·macos·ui·华为·harmonyos
向前看-3 小时前
验证码机制
前端·后端
xlsw_3 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
Hacker_LaoYi4 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql