django静态文件加载的方法

作者:MiniBirdie 时间:2022-12-26 13:57:56 

在模板中往往要加载静态文件,如CSS, JavaScript,图片等。那么这些文件在django中如何才能正确加载呢?

首先要在settings文件中进行设置,关于静态文件的设置选项主要由以下几项:

1. STATIC_URL = '/static/'

指定静态文件查找的url。这样设置后一般来说我们只要把静态文件放在 APP 中的 static 目录下就可以,但是有时我们有一些共用的静态文件,这时候可以设置 STATICFILES_DIRS 另外弄一个文件夹。

2.STATIC_ROOT =os.path.join(BASE_DIR, 'collected_static')

当运行 python manage.py collectstatic 的时STATIC_ROOT 文件夹是用来复制所有STATICFILES_DIRS文件夹中的文件,以及各app中static中的文件。把这些文件放到一起是为了用apache等部署的时候更方便。

3.      


STATICFILES_DIRS = (
 ("images",os.path.join(STATIC_URL, 'images').replace('\\', '/')),
 ("css",  os.path.join(STATIC_URL, 'css').replace('\\', '/')),
 ("js",  os.path.join(STATIC_URL, 'js').replace('\\', '/')),
)

其它存放静态文件的文件夹,可以用来存放项目中公用的静态文件,里面不能包含 STATIC_ROOT如果不想用 STATICFILES_DIRS 可以不用,都放在 app 里的 static 中也可以。

 4.     


STATICFILES_FINDERS = (
 "django.contrib.staticfiles.finders.FileSystemFinder",
 "django.contrib.staticfiles.finders.AppDirectoriesFinder"

)

默认设置,相当于搜索引擎,Django 默认会在 STATICFILES_DIRS中的文件夹和 各app下的static文件夹中找文件。注意有先后顺序,找到了就不再继续找了。

 那如何在模版中使用这些静态文件呢?可以参考如下代码,其中语句{% load static from staticfiles %}在这个模版文件中只需要出现一次。


{% load static from staticfiles %}

<link href="{% static" rel="external nofollow" css/sample.css" %}" rel="stylesheet">

用下边的方法也可


{% load static from staticfiles %}
{% static "css/sample.css" assample %}
<link href="{{ sample }}" rel="external nofollow" rel="stylesheet">

Django在运行时会自动将这些文件映射到STATIC_URL所给定的值下。也就是如,如果STATIC_URL = '/static/',那么在运行时,上边模版中的样例中的url会被替换为/static/css/sample.css。

这里做两点说明:

1.其实将静态文件路径硬编码在模版中也可以正常运行,如使用href="/static/css/sample.css" rel="external nofollow" ,前提是配置好了STATIC_URL和STATIC_DIRS。但并不推荐这么做,因为如果后来静态资源的位置发生了迁移,如使用独立服务器或者使用CDN,就要修改一大堆URL。而使用推荐的方法可以避免这个庞大的工作量,最多只需要修改STATIC_URL即可。

2.如果css文件中也使用了静态文件如css背景,则按照相对路径使用即可,因为浏览器解析css是会自动按照相对路径寻找到正确的URL。

在这里还需要强调的是,在开发阶段,Django使用的是内建的一个静态文件服务器,虽然在生产环境中也可以使用,但是它既不稳定也不安全。更好的方式是使用提供web服务的服务器如apache来服务静态文件。这需要你首先上传代码到服务器,然后运行collectstatic命令:python manage.py collectstatic 然后配置web服务器来为静态文件服务,如对Apache2进行配置。

来源:https://blog.csdn.net/lvze0321/article/details/53308109

标签:django,静态文件,加载
0
投稿

猜你喜欢

  • Python数据结构树与算法分析

    2023-10-10 19:30:18
  • Python深度学习pytorch神经网络Dropout应用详解解

    2023-01-02 11:18:54
  • 浅析ThinkPHP中的pathinfo模式和URL重写

    2024-05-03 15:50:39
  • python3 enum模块的应用实例详解

    2023-12-12 05:21:46
  • Java操作Mysql的方法

    2024-01-21 12:28:47
  • python中class(object)的含义是什么以及用法

    2023-08-07 22:00:19
  • Python OpenCV读取png图像转成jpg图像存储的方法

    2023-01-07 13:23:56
  • python控制nao机器人身体动作实例详解

    2023-08-26 11:33:17
  • 用一条SQL实现:一行多个字段数据的最大值

    2008-12-31 13:37:00
  • MySQL 导出数据为csv格式的方法

    2024-01-26 04:52:57
  • Go语言字典(map)用法实例分析【创建,填充,遍历,查找,修改,删除】

    2024-05-05 09:30:22
  • 关于使用PLSQL Developer时出现报错ora-12514的问题

    2024-01-15 09:12:17
  • django haystack实现全文检索的示例代码

    2021-04-08 05:00:59
  • Oracle数据库表空间超详细介绍

    2024-01-17 16:49:22
  • 简单仿LightBox效果

    2008-09-19 21:35:00
  • 十个Python经典小游戏的代码合集

    2021-08-03 12:09:38
  • 用python开发一款操作MySQL的小工具

    2024-01-26 08:55:19
  • 便捷提取python导入包的属性方法

    2022-05-11 05:07:17
  • VC基于ADO技术访问数据库的方法

    2024-01-28 22:25:08
  • 原生js实现Flappy Bird小游戏

    2024-04-29 13:37:03
  • asp之家 网络编程 m.aspxhome.com