官术网_书友最值得收藏!

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:

  1. 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
  2. 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
主站蜘蛛池模板: 中江县| 瑞昌市| 雷波县| 十堰市| 囊谦县| 洮南市| 重庆市| 西贡区| 塔河县| 乐安县| 台山市| 台北市| 娄烦县| 敖汉旗| 定襄县| 都昌县| 松阳县| 顺昌县| 石城县| 蒙城县| 连云港市| 栾川县| 仙居县| 建昌县| 克拉玛依市| 锦州市| 卓资县| 静海县| 彩票| 望城县| 乌兰察布市| 黔南| 楚雄市| 宜阳县| 阿图什市| 苏尼特右旗| 涿州市| 自贡市| 洪泽县| 武威市| 潜山县|