A small extension to download css and js vendor files from CDNs and host them locally.
Project description
django-download-vendor-files
Setup
Install using pip:
pip install django-vendor-files
Add vendor_files
to INSTALLED_APPS
in your Django settings:
INSTALLED_APPS = (
...
'vendor_files',
)
Put the vendor
directory in STATICFILES_DIRS
in your Django settings:
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'vendor/'),
...
)
Remarks:
- stay first if you wont load vendor libs first
- stay second after you own static if you wish ovveride (patch) vendor lib
Add a VENDOR
setting to your Django settings, and add your vendor files with URL and SNI, e.g.:
VENDOR = {
'jquery': {
'url': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/',
'js': [
{
# final url will be: https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js
'path': 'jquery.min.js',
'sri': 'sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==',
}
]
},
'bootstrap': {
'url': 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/',
'js': [
{
'path': 'js/bootstrap.min.js',
'sri': 'sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa',
}
],
'css': [
{
'path': 'css/bootstrap.min.css',
'sri': 'sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u',
}
]
}
}
Usage
Put {% load vendor_tags %}
at the top of your Django template and the vendor tag , e.g.: {% vendor 'jquery' %}
, somewhere in your HTML:
{% load staticfiles %}
{% load vendor_tags %}
<!DOCTYPE html>
<html>
<head>
<title>{{ request.site.name }}</title>
...
{% vendor 'jquery' %}
{% vendor 'bootstrap' %}
</head>
Extended tags, extract only js or css (can be usefull example for django-compressor):
{% vendor 'jquery' 'js' %}
# or you can use
{% vendor_js 'jquery' %}
{% vendor 'jquery' 'css' %}
# or you can use
{% vendor_css 'jquery' %}
Then, you have 2 options:
-
To use a CDN, put
VENDOR_CDN = True
in your Django settings and the vendor tag will be replaced by a<link>
or<script>
tag using the URLs in the settings. -
To use a local copy, put
VENDOR_CDN = False
(or nothing at all) in your Django settings and the vendor tag will be replaced by a<link>
or<script>
tag using yourSTATIC_PATH
. The files can be downloaded:python ./manage.py download_vendor_files
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file django-vendor-files-0.3.tar.gz
.
File metadata
- Download URL: django-vendor-files-0.3.tar.gz
- Upload date:
- Size: 4.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f19af52293140d8aee983cc5523e45810cf37398e332d6b6d0fee034c809c97 |
|
MD5 | a7295a47251b14e263580291de67d2ee |
|
BLAKE2b-256 | 174130e969deff2b010538952c9fed971b8d88f49aa140a7a70edfffd6e63146 |
File details
Details for the file django_vendor_files-0.3-py3-none-any.whl
.
File metadata
- Download URL: django_vendor_files-0.3-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e404a6aef9daf274d851fae5db03d9a02e58722ef1fd50cd77bb19c9b5367312 |
|
MD5 | 5f75240f118c29449c8162368f46c944 |
|
BLAKE2b-256 | 53694f73bd63aed765ed0e4245f10bc6305db04efdf8f11ca40699c499c99c20 |