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 = Truein 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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|