Ask Your Question

askbot & staticfiles

asked 2011-12-06 15:09:15 -0600

piskvorky's avatar

updated 2011-12-06 15:10:53 -0600

First, congrats on the forum upgrade and the new looks :) Parts of the forum appeared in russian to me today, so I assumed something was happening :)

Now, I was integrating askbot into an existing application, merging the settings manually. There were several small issues (askbot uses older django, so some things moved between django.contrib and django.core, some were deprecated etc), but overall no problem. The automated checks were pretty helpful.

My question is about using askbot together with django.contrib.staticfiles. If I understand correctly, askbot doesn't use staticfiles. Static URLs and directories are hard-coded, and are automatically served by django (btw can this be turned off? i'd prefer to see an error), unless explicitly intercepted by the web server earlier (needs manual configuration with some obscure locations).

Is there any planned support for STATIC_URL, the SERVE_MEDIA flag and the "python collectstatic" utility? Pretty useful from deployment point of view, IMO.

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2011-12-06 15:43:57 -0600

Evgeny's avatar

In askbot we use skins: .html templates, stylesheets and javascript, and the idea is that you should be able to switch the skin by configuration in the live settings.

We did not think yet on how to integrate this with the staticfiles approach, maybe there is a way, worth exploring.

edit flag offensive delete link more


Ok, thanks Evgeny. Btw skins and static files can be used together, that shouldn't be a problem.

piskvorky's avatar piskvorky  ( 2011-12-06 18:01:13 -0600 )edit

answered 2011-12-06 18:39:29 -0600

piskvorky's avatar

updated 2011-12-06 19:34:23 -0600

My "quick hack" solution, in case anyone finds it useful:

  1. forbid askbot serving static files: in askbot/views/, make media() raise an exception.
  2. in the askbot application, alias the skins directory as static:

    [askbot-devel/askbot]$ ln -s skins static

The second step makes staticfiles automatically recognize and process the askbot static files. Now " collectstatic" works -- all static files are in a single place, easy to deploy. (Alternative way: add os.path.join(ASKBOT_ROOT, 'skins') to STATICFILES_DIRS in

However, askbot urls have media locations hardwired under m/ (not STATIC_URL), so we still need to adjust the web server. For nginx:


    location /qa/m/  { # qa/ = settings.ASKBOT_URL
        expires      7d; # or whatever
        alias /content/of/your/settings.STATIC_ROOT/; # check filesystem permissions!

If anyone finds a better/cleaner way, please let me know.

EDIT: Actually this entire procedure (all three steps) can be replaced by this patch to askbot code:

edit flag offensive delete link more


Hey, this looks cool, we'll get to this tomorrow. Thanks!

Evgeny's avatar Evgeny  ( 2011-12-06 20:45:10 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools


Asked: 2011-12-06 15:09:15 -0600

Seen: 4,507 times

Last updated: Dec 06 '11