Django对静态文件的处理
发布日期:2022-02-22 16:04:56 浏览次数:38 分类:技术文章

本文共 2305 字,大约阅读时间需要 7 分钟。

Django 处理静态文件

基础

作为基础,首先当然是要修改settings.py中的设置,主要是要修改以下内容

import os, socketBASE_DIR = os.path.dirname(os.path.dirname(__file__))# many many other settings# 静态文件在生产环境中的存储位置STATIC_ROOT = '/var/www/yoursite/static/'# 静态文件的URLSTATIC_URL = '/static/'# Django 应该在哪些位置寻找静态文件STATICFILES_DIRS = (    os.path.join(BASE_DIR, "static"),)# 静态文件收集引擎,如果静态文件与Django在同一台服务器上,则不用设置# 此时将使用默认引擎将静态文件收集到STATIC_ROOT中STATIC_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'

然后确认在settings.py中的INSTALLED_APPS中有配置项

'django.contrib.staticfiles',

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

{% load static from staticfiles %}

用下边的方法也可

{% load static from staticfiles %}{% static "css/sample.css" as sample %}

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

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

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

使用Django所在服务器提供静态文件

在开发阶段,Django使用的是内建的一个静态文件服务器,虽然在生产环境中也可以使用,但是它既不稳定也不安全。更好的方式是使用提供web服务的服务器如apache来服务静态文件。

首先上传代码到服务器,然后运行collectstatic命令

# python manage.py collectstatic

然后配置web服务器来为静态文件服务,如对Apache2进行配置

Alias /robots.txt /var/www/mysite/static/robots.txtAlias /favicon.ico /var/www/mysite/static/favicon.icoAlias /media/ /var/www/mysite/media/Alias /static/ /var/www/mysite/static/
Require all granted
Require all granted
WSGIScriptAlias / /var/www/mysite/mysite/wsgi.pyWSGIPythonPath /var/www/mysite
Require all granted

注意:如果使用的是2.4以前的Apache版本,那么需要将Require all granted修改如下,且注意denyallow之间没有空格!!!

Order deny,allowAllow from all

在专用的服务器上提供静态文件

与上边基本相同,由于是另一台机器,因此可以使用其他的web服务器如nginx等。

首先上传代码到Django所在的服务器并执行collectstatic命令,将静态文件收集到Django所在服务器上的目录STATIC_ROOT中,然后拷贝这些静态文件到专用服务器上,配置专用服务器使其能够提供静态文件服务。可以考虑使用来进行拷贝,因为它仅仅会传输发生改动的那些字节。

另外,因为静态文件迁移到了另一台服务器上,所以可能需要修正STATIC_URL,同时重新配置web服务器。

当然,这个过车也可以使用脚本自动完成,如使用.

使用云存储服务或者CDN

如果使用云存储或者CDN,有两种方法可以提供静态文件。

第一种类似在专用的服务器上提供静态文件,只是才拷贝文件的时候是拷贝到相应的云服务或者CDN上。

第二种方法,如果第三方云存储服务或者CDN提供了API,可以动手实现一个静态文件收集引擎,那么运行collectstatic命令时会自动将静态文件收集到第三方存储中,过程也就变得更简单。

转载于:https://www.cnblogs.com/Rainday/p/4195111.html

转载地址:https://blog.csdn.net/dianchoucong6518/article/details/102293627 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:CMurphi入门笔记(五)——语句
下一篇:C#中Abstract和Virtual

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年03月06日 00时04分20秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java进程user是jenkins_java 学习:在java中启动其他应用,由jenkins想到的 2019-04-21
java添加资源文件_如何在eclipse中将资源文件夹添加到我的Java项目中 2019-04-21
java的三种修饰符_3分钟弄明白JAVA三大修饰符 2019-04-21
mysql source skip_redis mysql 中的跳表(skip list) 查找树(btree) 2019-04-21
java正则过滤Linux命令_linux - grep常用正则表达式,过滤文本内容 2019-04-21
java流过程_Java IO流和文件操作实现过程解析 2019-04-21
processing编译java_java – 使用Processing在Android SDK中编译build.... 2019-04-21
java sun.org.mozilla_maven编译找不到符号 sun.org.mozilla.javascript.internal 2019-04-21
php curl 输出到文件,PHP 利用CURL(HTTP)实现服务器上传文件至另一服务器 2019-04-21
PHP字符串运算结果,PHP运算符(二)"字符串运算符"实例详解 2019-04-21
PHP实现 bcrypt,如何使php中的bcrypt和Java中的jbcrypt兼容 2019-04-21
php8安全,PHP八大安全函数解析 2019-04-21
php基础语法了解和熟悉的表现,PHP第二课 了解PHP的基本语法以及目录结构 2019-04-21
matlab中lag函数用法,MATLAB movavg函数用法 2019-04-21
matlab变形监测,基于matlab的变形监测数据处理与分析_毕业设计论文 2019-04-21
opencv matlab编程,在Matlab中调用OpenCV函数 | 学步园 2019-04-21
c语言文件wt,c语言,wt和rt中的t是什么意思 2019-04-21
c语言运行几进制,【C语言】求已知等式在几进制条件下成立 2019-04-21
电梯运行仿真c语言代码,电梯调度算法模拟(示例代码) 2021-06-24
linux resolv.conf 只读,ubuntu--修改DNS--resolvconf命令 2021-06-24