-
Book Overview & Buying
-
Table Of Contents
Web Development with Django Cookbook - Second Edition
By :
If you set STATIC_URL to a static value, then each time you update a CSS file, JavaScript file, or image, you will need to clear the browser cache in order to see the changes. There is a trick to work around clearing the browser's cache. It is to have the revision number of the version control system shown in STATIC_URL. Whenever the code is updated, the visitor's browser will force the loading of all-new static files.
This recipe shows how to put a revision number in STATIC_URL for subversion users.
Make sure that your project is under the subversion version control and you have BASE_DIR defined in your settings, as shown in the Defining relative paths in the settings recipe.
Then, create the utils module in your Django project, and also create a file called misc.py there.
The procedure to put the revision number in the STATIC_URL setting consists of the following two steps:
# utils/misc.py
# -*- coding: UTF-8 -*-
from __future__ import unicode_literals
import subprocess
def get_media_svn_revision(absolute_path):
repo_dir = absolute_path
svn_revision = subprocess.Popen(
'svn info | grep "Revision" | awk \'{print $2}\'',
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
shell=True, cwd=repo_dir, universal_newlines=True)
rev = svn_revision.communicate()[0].partition('\n')[0]
return revsettings.py file and add the following lines:# settings.py
# … somewhere after BASE_DIR definition …
from utils.misc import get_media_svn_revision
STATIC_URL = "/static/%s/" % get_media_svn_revision(BASE_DIR)The get_media_svn_revision() function takes the absolute_path directory as a parameter and calls the svn info shell command in that directory to find out the current revision. We pass BASE_DIR to the function as we are sure that it is under version control. Then, the revision is parsed, returned, and included in the STATIC_URL definition.
Change the font size
Change margin width
Change background colour