Skip to main content

An easy to use Django app to make static site.

Project description

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

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

django-static-sites-0.0.8.tar.gz (31.7 kB view details)

Uploaded Source

Built Distribution

django_static_sites-0.0.8-py2-none-any.whl (50.5 kB view details)

Uploaded Python 2

File details

Details for the file django-static-sites-0.0.8.tar.gz.

File metadata

  • Download URL: django-static-sites-0.0.8.tar.gz
  • Upload date:
  • Size: 31.7 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for django-static-sites-0.0.8.tar.gz
Algorithm Hash digest
SHA256 00bb187ede68bcb8fe35f16d9422788fe1e23daf662ba7d5d79097de5f716ed4
MD5 473bd3b780a29b1975a957d43e18b1dd
BLAKE2b-256 e90cbd86c9679a285e7d8ce2da1fc240f18a2bef4f603215759e9059af82343d

See more details on using hashes here.

File details

Details for the file django_static_sites-0.0.8-py2-none-any.whl.

File metadata

  • Download URL: django_static_sites-0.0.8-py2-none-any.whl
  • Upload date:
  • Size: 50.5 kB
  • Tags: Python 2
  • Uploaded using 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

File hashes

Hashes for django_static_sites-0.0.8-py2-none-any.whl
Algorithm Hash digest
SHA256 1862a97f2fc1a66975b6cef56d22020f9ae5a07e6df2b59b89bff0030240b3d8
MD5 46678e5dd41776db9e079bb0c70d7ae2
BLAKE2b-256 a79988394bdaba3a2a053e98e4716c6138c7173b4162dcb8c2182b9768de16af

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