django-spa
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
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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| django-spa-0.3.6.tar.gz | 14.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.