欢迎访问宙启技术站
智能推送

Python中通过DjangoWhiteNoise实现静态文件的自动压缩和缓存

发布时间:2023-12-12 11:50:22

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/,即可看到页面中的静态文件已经自动进行了压缩和缓存。