Skip to main content

用于离线编码时缓存 CDN 文件的 Django 应用程序

项目描述

这个应用程序是为了帮助那些你无法上网但你想写一些 Django 代码的情况。用这个模板标签包围你的静态 CDN 引用(如 jquery 等),当你打开它时,URL 将从本地副本重写。

安装

在您的设置文件中,将“飞机”添加到您的settings.INSTALLED_APPS字段:

INSTALLED_APPS = (
    ...
    'airplane',
)

同样在设置中,进行以下添加:

import airplane

STATICFILES_DIRS = (
    airplane.cache_path(),
)

AIRPLANE_MODE = airplane.BUILD_CACHE
#AIRPLANE_MODE = airplane.USE_CACHE
#AIRPLANE_MODE = airplane.AUTO_CACHE

现在在您的模板中使用飞机标签

{% load airplanetags %}

<html>
    <head>
        <link rel=<s>"stylesheet"</s>
            href=<s>"{% airplane 'https://maxcdn.bootstrapcdn.com/bootstrap.min.css' %}"</s>>
    </head>
</html>

将AIRPLANE_MODE设置更改为plane.USE_CACHE并且随后对{% plane %}标记的调用将返回对本地缓存版本的引用。

设置

Airplane 仅在DEBUG=True并且您将 AIRPLANE_MODE值设置为plane.BUILD_CACHEairplane.USE_CACHEplane.AUTO_CACHE时才会执行某些操作。如果不满足这些条件之一,则标签仅返回传入的值。

例如,如果DEBUG=False并且您的模板包含:

<link rel=<s>"stylesheet"</s>
    href=<s>"{% airplane 'https://maxcdn.bootstrapcdn.com/bootstrap.min.css' %}"</s>>

然后上面的代码片段呈现为:

<link rel=<s>"stylesheet"</s>
    href=<s>"https://maxcdn.bootstrapcdn.com/bootstrap.min.css"</s>>

AIRPLANE_MODE设置为plane.BUILD_CACHE时,将获取传入的任何 URL,并将其内容添加到本地缓存中。默认的本地缓存是.airport_cache相对于项目的基本目录。

您可以通过设置AIRPLANE_CACHE来更改缓存的位置。该设置接受完全限定的路径或相对于项目基目录的路径。

# settings.py

AIRPLANE_CACHE = /foo/bar/cache     # fully qualified

# or

AIRPLANE_CACHE = my_cache           # relative to settings.BASE_DIR

# or nothing, defaults to settings.BASEDIR + '.airplane_cache'

缓存所有正在使用的文件后,将AIRPLANE_MODE切换为 plane.USE_CACHE。现在所有 URL 都被重写以指向本地缓存的内容。

或者,您可以将AIRPLANE_MODE设置为plane.AUTO_CACHE,第一次调用将缓存文件,后续调用将使用缓存的副本。

命令

以下 django 命令随飞机一起提供。

航空资讯

$ ./manage.py airinfo
Cache mode: AUTO_CACHE
Cache directory: /Users/foo/sample_site/.airplane_cache
Cache contents:
   https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css

此命令不带参数并显示有关缓存的信息。显示当前模式、目录路径和缓存的任何项目。

气垫

./manage.py aircache https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css

此命令将单个 URL 作为参数并缓存 URL 的内容。

无架构 URL

由于飞机是一个模板标签库,它在执行时无权访问请求对象。为了允许无模式 URL,如果 URL 中没有给出模式,代码会假设模式是“https”。

限制

该库的目的是在您使用 Django 调试服务器以及无法轻松访问网络的情况下为您提供帮助。缓存文件使用 django 静态服务器代码提供服务,这意味着您受到它可以提供的文件类型的限制。静态服务器根据文件扩展名猜测文件的 mimetype。飞机天真地复制文件的扩展名,因此缓存的文件具有相同的结尾。这意味着带有奇怪扩展名的 URL 或静态服务无法猜测 mimetype 的 URL 将导致问题。不建议将 django-airplane 用于不以典型扩展名结尾的文件,例如“.css”、“.js”、“.jpg”、“.png”或“.gif”。

支持

django-airplane 已经过测试:

  • Python 3.6、3.7 和 Django 2.2

  • Python 3.6、3.7 和 Django 3.0

文档

文档位于:http ://django-airplane.readthedocs.io/en/latest/

来源:https ://github.com/cltrudeau/django-airplane

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

django-airplane-1.1.0.tar.gz (10.0 kB 查看哈希)

已上传 source

内置分布

django_airplane-1.1.0-py2.py3-none-any.whl (10.7 kB 查看哈希

已上传 py2 py3