Installation
Basic installation¤
-
Install
django_components
into your environment: -
Load
django_components
into Django by adding it intoINSTALLED_APPS
in your settings file: -
BASE_DIR
setting is required. Ensure that it is defined: -
Next, modify
TEMPLATES
section ofsettings.py
as follows:- Remove
'APP_DIRS': True,
- NOTE: Instead of
APP_DIRS: True
, we will usedjango.template.loaders.app_directories.Loader
, which has the same effect.
- NOTE: Instead of
- Add
loaders
toOPTIONS
list and set it to following value:
This allows Django to load component HTML files as Django templates.
TEMPLATES = [ { ..., 'OPTIONS': { ..., 'loaders':[( 'django.template.loaders.cached.Loader', [ # Default Django loader 'django.template.loaders.filesystem.Loader', # Including this is the same as APP_DIRS=True 'django.template.loaders.app_directories.Loader', # Components loader 'django_components.template_loader.Loader', ] )], }, }, ]
- Remove
-
Add django-component's URL paths to your
urlpatterns
:Django components already prefixes all URLs with
components/
. So when you are adding the URLs tourlpatterns
, you can use an empty string as the first argument:
Adding support for JS and CSS¤
If you want to use JS or CSS with components, you will need to:
-
Add
"django_components.finders.ComponentsFileSystemFinder"
toSTATICFILES_FINDERS
in your settings file.This allows Django to serve component JS and CSS as static files.
-
Optional. If you want to change where the JS and CSS is rendered, use
{% component_js_dependencies %}
and{% component_css_dependencies %}
.By default, the JS
<script>
and CSS<link>
tags are automatically inserted into the HTML (See Default JS / CSS locations). -
Optional. By default, components' JS and CSS files are cached in memory.
If you want to change the cache backend, set the
COMPONENTS.cache
setting.Read more in Caching.
Optional¤
Builtin template tags¤
To avoid loading the app in each template using {% load component_tags %}
, you can add the tag as a 'builtin' in settings.py
:
TEMPLATES = [
{
...,
'OPTIONS': {
...,
'builtins': [
'django_components.templatetags.component_tags',
]
},
},
]
Component directories¤
django-components needs to know where to search for component HTML, JS and CSS files.
There are two ways to configure the component directories:
COMPONENTS.dirs
sets global component directories.COMPONENTS.app_dirs
sets app-level component directories.
By default, django-components will look for a top-level /components
directory, {BASE_DIR}/components
, equivalent to:
from django_components import ComponentsSettings
COMPONENTS = ComponentsSettings(
dirs=[
...,
Path(BASE_DIR) / "components",
],
)
For app-level directories, the default is [app]/components
, equivalent to:
from django_components import ComponentsSettings
COMPONENTS = ComponentsSettings(
app_dirs=[
...,
"components",
],
)
Note
The input to COMPONENTS.dirs
is the same as for STATICFILES_DIRS
, and the paths must be full paths. See Django docs.
Now you're all set! Read on to find out how to build your first component.