Python中通过DjangoWhiteNoise实现静态文件的自动压缩和缓存
DjangoWhiteNoise是Django框架中的一个第三方应用,它提供了自动压缩和缓存静态文件的功能。下面是一个使用DjangoWhiteNoise进行静态文件压缩和缓存的示例。
首先,需要在Django项目的settings.py文件中配置DjangoWhiteNoise。
1. 安装DjangoWhiteNoise
可以使用pip安装DjangoWhiteNoise库:
pip install whitenoise
2. 添加DjangoWhiteNoise到INSTALLED_APPS
在settings.py文件的INSTALLED_APPS列表中添加'whitenoise.runserver_nostatic':
INSTALLED_APPS = [
...
'whitenoise.runserver_nostatic',
...
]
3. 配置静态文件路径
在settings.py文件中添加STATIC_ROOT和STATICFILES_STORAGE配置:
STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
以上配置中,STATIC_ROOT指定了静态文件的存储路径,STATICFILES_STORAGE指定了使用DjangoWhiteNoise的压缩和缓存功能。
4. 修改wsgi.py文件
在项目根目录下的wsgi.py文件中,添加如下代码:
from whitenoise import WhiteNoise application = WhiteNoise(application)
5. 收集静态文件
在项目根目录下运行以下命令,将静态文件收集到STATIC_ROOT目录中:
python manage.py collectstatic
运行以上命令后,Django会将所有的静态文件(包括CSS、JavaScript、图片等)从各个应用目录中复制到STATIC_ROOT目录中。
至此,静态文件的自动压缩和缓存配置完成。
示例:使用DjangoWhiteNoise的静态文件压缩和缓存功能。
1. 创建一个Django项目
使用Django的命令行工具创建一个新的Django项目:
django-admin startproject myproject
2. 修改settings.py文件
在settings.py文件的INSTALLED_APPS列表中添加'whitenoise.runserver_nostatic'。
配置静态文件路径:
STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
3. 编写视图函数
在Django项目的views.py文件中,编写一个简单的视图函数:
from django.shortcuts import render
def index(request):
return render(request, 'index.html')
4. 创建模板文件
在Django项目的templates目录下创建一个index.html模板文件,并添加一些静态文件链接:
<!DOCTYPE html>
<html>
<head>
<title>My Project</title>
<link rel="stylesheet" href="{% static 'css/style.css' %}">
</head>
<body>
<h1>Hello, Django!</h1>
<img src="{% static 'images/logo.png' %}">
<script src="{% static 'js/main.js' %}"></script>
</body>
</html>
5. 修改urls.py文件
在Django项目的urls.py文件中,将index视图函数和对应的URL路径关联起来:
from myproject.views import index
urlpatterns = [
...
path('', index, name='index'),
...
]
6. 收集静态文件
在项目根目录下运行以下命令,将静态文件收集到STATIC_ROOT目录中:
python manage.py collectstatic
7. 运行Django项目
在项目根目录下运行以下命令,启动Django开发服务器:
python manage.py runserver
访问http://localhost:8000/,即可看到页面中的静态文件已经自动进行了压缩和缓存。
