WebComponents for Django
Project description
djwc: Django WebComponents
Introduction
WebComponents is a W3C standard supported by all browsers for a couple of years now, see their Getting Started introduction for details.
Getting started
How to try djwc
For a quick test:
- clone and enter this repo
- run
pip install django -e .
- start the example with:
./manage.py djwc && ./manage.py runserver
You should see some polymer components on localhost:8000
How to install djwc
pip install djwc
,- add
djwc
toINSTALLED_APPS
(for the management command) - add the
'djwc.middleware.StaticMiddleware'
MIDDLEWARE
(to inject scripts).
How to use webcomponents
- Declare the components that you want to use
- Run
./manage.py djwc
to install them (does not use NodeJS) - Use the HTML tags for your components
That's it !! The middleware will do the rest.
Read on for details about each step.
Declaring components
You can declare components per-app, per-project, and also include bundles.
Settings
You can add a paper-input
component to DJWC in the settings by referencing
its npm path:
DJWC = {
'COMPONENTS': {
'paper-input': '@polymer/paper-input/paper-input.js',
}
}
This will have predecence over any other setting.
AppConfig
Or, define an AppConfig.components
attribute to add components to your
reusable app.
class AppConfig(apps.AppConfig):
components = {
'paper-input': '@polymer/paper-input/paper-input.js',
}
This will be automatically detected.
Libraries
You can also include a bunch of webcomponents with the DJWC['LIBRARIES']
setting:
DJWC = {
'LIBRARIES': ['djwc_polymer'],
}
More to come, these are manually maintained at this time.
Installing components with ./manage.py djwc
Then, run the ./manage.py djwc
command that will download all the scripts
into a static directory. Do this prior to collectstatic in production, and
every-time you change your components declaration.
Using components
Just use your new tag wherever you want, such as in templates:
<paper-input always-float-label label="Floating label"></paper-input>
The middleware will inject the corresponding script whenever the middleware
will find a paper-input
tag.
FAQ
I've read that WebComponents are not accessible
Apparently, accessibility is fine with aria attributes.
What next ?
- Do add unit tests when a contributor breaks it
- Optimize the djwc command
- Automate djwc_polymer
- Add moar bundles ! Like bootstrap-webcomponents ! yay !
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file djwc-1.3.3.tar.gz
.
File metadata
- Download URL: djwc-1.3.3.tar.gz
- Upload date:
- Size: 9.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 316460f18a111a48c036cd7ea48edd686e2e8525d519ef5712f357b856cecce5 |
|
MD5 | 088b35a53ef40f86492502d578c2015f |
|
BLAKE2b-256 | abc9b86716e1d31d1c3fb2e78aab85c80054080438043cca481af7616ff24c46 |