- Web Development with Django Cookbook(Second Edition)
- Aidas Bendoraitis
- 316字
- 2021-07-23 14:31:59
Setting up STATIC_URL dynamically for Subversion users
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.
Getting ready
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.
How to do it…
The procedure to put the revision number in the STATIC_URL
setting consists of the following two steps:
- Insert the following content:
# 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 rev
- Then, modify the
settings.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)
How it works…
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.
See also
- The Setting up STATIC_URL dynamically for Git users recipe
- The Setting the Subversion ignore property recipe
- Manga Studio Ex 5 Cookbook
- Learning Data Mining with Python
- Cassandra Data Modeling and Analysis
- JS全書:JavaScript Web前端開發指南
- WordPress Plugin Development Cookbook(Second Edition)
- 移動界面(Web/App)Photoshop UI設計十全大補
- Unity 2017 Mobile Game Development
- Web Developer's Reference Guide
- JSP程序設計與案例實戰(慕課版)
- Puppet 5 Beginner's Guide(Third Edition)
- Flutter for Beginners
- Instant JRebel
- Learning Yeoman
- Responsive Web Design with HTML5 and CSS3(Second Edition)
- Getting Started with SpriteKit