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.
How to start
- 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
) - create an empty optimized project by
django-static-admin startproject PROJECT_NAME
command - move to the
PROJECT_NAME
folder and create site bypython manage.py startsite SITE_NAME
command - migrate
python manage.py migrate
- deploy
python manage.py deploy
- start server
python manage.py runserver
- 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
Add to an existing project
If you want to integrate django-static-sites
in existing project you must to:
- add
staticsites
in your INSTALLED_APPS (replace django.contrib.staticfiles)
If you want to use Django development server to serve the deployed static site:
- 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
autodeploystatic file optimization- revert deploy if fail
GZip deployed filesminify deployed filescustom header for deployed filessinge configuration constant as dictionarydeploy on multiple remote- add param check and raise Exception
- update tests
dedicated settings module for sampleadd tutorialsdeploy admin console
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django-static-sites-0.0.8.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00bb187ede68bcb8fe35f16d9422788fe1e23daf662ba7d5d79097de5f716ed4 |
|
MD5 | 473bd3b780a29b1975a957d43e18b1dd |
|
BLAKE2b-256 | e90cbd86c9679a285e7d8ce2da1fc240f18a2bef4f603215759e9059af82343d |
Hashes for django_static_sites-0.0.8-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1862a97f2fc1a66975b6cef56d22020f9ae5a07e6df2b59b89bff0030240b3d8 |
|
MD5 | 46678e5dd41776db9e079bb0c70d7ae2 |
|
BLAKE2b-256 | a79988394bdaba3a2a053e98e4716c6138c7173b4162dcb8c2182b9768de16af |