Skip to main content

django-static-sites

django-static-sites is an easy to use Django app that allow you to create a static sites with the power of Django template system. You can render an existing Django view by adding a decorator or you can create an empty project optimized for django-static-sites use. You can specify multiple configuration for multiple deploy type.

GitHub

How to start

  1. install django-static-sites in your python path or in your virtualenv path (pip install django-static-sites) or (pip install https://github.com/ciotto/django-static-sites/archive/master.zip)
  2. create an empty optimized project by django-static-admin startproject PROJECT_NAME command
  3. move to the PROJECT_NAME folder and create site by python manage.py startsite SITE_NAME command
  4. migrate python manage.py migrate
  5. deploy python manage.py deploy
  6. start server python manage.py runserver
  7. enjoy it at http://127.0.0.1:8000 :-)

How to use

If you want to use the Django template system, you must to add a function in your views.py file and add the @staticview decorator:

@staticview
def index(request):
    ctx = {'title': 'Hello world!'}

    return render_to_response('index.html', ctx, context_instance=RequestContext(request))

and the index.html template file in your templates folder:

<!DOCTYPE html>
<html lang="it">
<head>
    <meta charset="UTF-8">

    <title>{{ title }}</title>
</head>
<body>
    <h1>{{ title }}</h1>
</body>
</html>

When you deploy (python manage.py deploy or autodeploy), django-static-sites create the index.html using index.html template.

If you want to add an rendered javascript file, you can create a view:

@staticview(path={'demo': 'asd/test.js', '': 'js/test.js'})
def js__test(request):

    ctx = {'title': 'Hello world!'}

    return render_to_response('test.js', ctx, context_instance=RequestContext(request))

and the relatine test.js template:

var text = '{{ title }}';

alert(text);

The test.js destination path are specified in @staticview decorator and is different for different deploy type so we must add 'js_path': js__test.path.get(deploy_type=deploy_type) in the index.html context. deploy_type are passed to the view functions if is declared. Now we can add the import line in the index.html file:

<script type="text/javascript" src="{{ js_path }}"></script>

You can see this and more samples in staticsites/tests/samples folder; you can launch the deploy server for this samples by manage.py runserver --settings staticsites.tests.samples.SAMPLE_NAME.settings command.

Other samples
  1. Hello world
  2. Hello world (with static)
  3. AWS S3/CloudFront
  4. AWS S3/CloudFront (multiple remote)
  5. FTP

Add to an existing project

If you want to integrate django-static-sites in existing project you must to:

  1. add staticsites in your INSTALLED_APPS (replace django.contrib.staticfiles)

If you want to use Django development server to serve the deployed static site:

  1. add this lines at your url.py
# Serve default deploy folder as site root
if settings.DEBUG:
    urlpatterns += [
        url(
            r'^(?:%s)?$' % get_default_index(deploy_type='dev'),
            serve,
            {
                'document_root': get_deploy_root(deploy_type='dev'), 'path': get_default_index(deploy_type='dev')
            }
        ),
        url(
            r'^(?P<path>.*)$',
            serve,
            {
                'document_root': get_deploy_root(deploy_type='dev')
            }
        ),
    ]

Remote deploy

django-static-sites use the Django Storage system during the deploy procedure; by default the file are deployed locally using FileSystemStorage, but you can use any other Storage with the correct settings. In the AWS S3/CloudFront samples I use the django-storages AWS storage for deploying on Amazon S3 bucket.

ToDo

django-static-sites is work-in-progres:

  • add automatic url pattern
  • autodeploy
  • static file optimization
  • revert deploy if fail
  • GZip deployed files
  • minify deployed files
  • custom header for deployed files
  • singe configuration constant as dictionary
  • deploy on multiple remote
  • add param check and raise Exception
  • update tests
  • dedicated settings module for sample
  • add tutorials
  • deploy admin console

Release files for django-static-sites 0.0.8

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-static-sites 0.0.8
File Size Uploaded
django-static-sites-0.0.8.tar.gz 31.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-static-sites 0.0.8
File Interpreter ABI Platform
django_static_sites-0.0.8-py2-none-any.whl Python 2 none any Details

Total release size: 82.2 kB

Release files / django-static-sites-0.0.8.tar.gz

Download URL django-static-sites-0.0.8.tar.gz
Size 31.7 kB
Tags Source
SHA-256 checksum
How to use checksums
00bb187ede68bcb8fe35f16d9422788fe1e23daf662ba7d5d79097de5f716ed4
BLAKE2b-256 checksum
How to use checksums
e90cbd86c9679a285e7d8ce2da1fc240f18a2bef4f603215759e9059af82343d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/42.0.2 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.6

Release files / django_static_sites-0.0.8-py2-none-any.whl

Download URL django_static_sites-0.0.8-py2-none-any.whl
Size 50.5 kB
Tags Python 2
SHA-256 checksum
How to use checksums
1862a97f2fc1a66975b6cef56d22020f9ae5a07e6df2b59b89bff0030240b3d8
BLAKE2b-256 checksum
How to use checksums
a79988394bdaba3a2a053e98e4716c6138c7173b4162dcb8c2182b9768de16af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/42.0.2 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.6

Release history Release notifications | RSS feed

This release

0.0.8 This release

2 release files

0.0.7

1 release file

0.0.6

1 release file

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