Skip to main content

django-spa

https://badge.fury.io/py/django-spa.svg https://travis-ci.org/metakermit/django-spa.svg?branch=master Documentation Status Updates GitHub license

Django package to serve a single-page app (SPA).

The following settings that make serving SPAs easier are handled in django-spa:

  • index.html served when / requested

  • all /static/… files served on /… as well

  • Django’s urls still work (Django admin, templates, Django REST framework APIs)

  • everything else goes to / for frontend routing (e.g. react-router)

Usage

For an example of using django-spa to serve a create-react-app frontend that consumes a Django REST framework API, check out generator-django-rest.

As part of setting up django-spa, you also need to set up WhiteNoise, which we’ll summarise here.

First, add django-spa to your requirements.txt and pip install -r requirements.txt (or pipenv install django-spa). Whitenoise is installed as a dependency, so no need to specify it extra.

Update settings.py with the Whitenoise & django-spa middleware:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    'spa.middleware.SPAMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

Disable runserver’s static file serving by adding runserver_nostatic to the top of your INSTALLED_APPS list:

INSTALLED_APPS = [
    'whitenoise.runserver_nostatic',
    'django.contrib.staticfiles',
    # ...
]

Set the django-spa static file storage:

STATICFILES_STORAGE = 'spa.storage.SPAStaticFilesStorage'

You should be good to go!

Credits

Used some parts of the solution suggested in this WhiteNoise issue for serving index.html on /. This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

License

MIT

History

0.3.0 (2019-12-15)

  • add example project

  • support Django 3.0

0.2.0 (2017-09-01)

  • Fix #3

0.1.1 (2017-04-08)

  • Metadata fixes.

0.1.0 (2017-04-08)

  • First release on PyPI.

  • Initial django-spa middleware.

Metadata

Release files for django-spa 0.3.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-spa 0.3.6
File Size Uploaded Provenance
django-spa-0.3.6.tar.gz 14.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for django-spa 0.3.6
File Interpreter ABI Platform
django_spa-0.3.6-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 21.3 kB

Release files / django-spa-0.3.6.tar.gz

Download URL django-spa-0.3.6.tar.gz
Size 14.4 kB
Tags Source
SHA-256 checksum
How to use checksums
fc09eb0dd0b296bd4c4fcaa8fb7715f363ed385bc2446a6dcb4ee57b1b7027d5
BLAKE2b-256 checksum
How to use checksums
f6e4c4a40c3adf8e3837a41e92acc47c79fd797a850fcd6776570be292bc8e62
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.0 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.7

Release files / django_spa-0.3.6-py2.py3-none-any.whl

Download URL django_spa-0.3.6-py2.py3-none-any.whl
Size 6.9 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
b3eff51e4edfb046a5293e73ad0e3105f0ee654873b42bae172178acc47ad450
BLAKE2b-256 checksum
How to use checksums
20951f1d5e8efb4d8597f9e3d6160c22c6fd9ec43c0ea258eba085f1eb8120c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.0 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.7

Security for django-spa 0.3.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page