Skip to main content

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 to INSTALLED_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

djwc-1.3.1.tar.gz (5.6 kB view details)

Uploaded Source

File details

Details for the file djwc-1.3.1.tar.gz.

File metadata

  • Download URL: djwc-1.3.1.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.2

File hashes

Hashes for djwc-1.3.1.tar.gz
Algorithm Hash digest
SHA256 0704dc8165e035faa8b7a56bef8da09040254a34d5e3549e325b6ab18eb7ee89
MD5 4c56b6b396ad4610fbd03806710d6f4f
BLAKE2b-256 2bb7f28af6d0159843585691eb2b9941b3f550f90e75c01ed05fb5e12d197ce1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page