REQUIRE_BASE_URL与模板标签和shell命令的不同行为

时间:2014-03-14 11:26:17

标签: django requirejs

我正在使用django-require模块https://github.com/etianen/django-require并遇到一些问题

我已将REQUIRE_BASE_URL设置为“脚本”,而./manage.py require_init命令则出现错误

OSError: [Errno 13] Permission denied: '/static/js'

将其更改为os.path.join(STATIC_ROOT, 'scripts')后,命令成功结束。但是在模板标签{% require_module 'main' %}中,它打印为

<script src="/vagrant/static/scripts/require.js'

REQUIRE_BASE_URL更改回'script'后,标记的脚本变为正常

为什么会这样?有任何想法吗?我不想在每次部署项目时更改REQUIRE_BASE_URL

我的设置:

BASE_DIR = '/vagrant'
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_STORAGE = 'require.storage.OptimizedCachedStaticFilesStorage'
STATICFILES_DIRS = (
    STATIC_URL,
)
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'django.contrib.staticfiles.finders.FileSystemFinder',
)

REQUIRE_BASE_URL = 'scripts'

1 个答案:

答案 0 :(得分:0)

import sys 
if 'require_init' in sys.argv:
    REQUIRE_BASE_URL = os.path.join(STATIC_ROOT, 'scripts')
else:
    REQUIRE_BASE_URL = 'scripts'

错误的解决方案,但它的工作原理= \