2014-10-05 4 views
3

Я использую Django-конвейер для минификации активов и сжатия, но там, кажется, ошибку, когда я пытаюсь запуститьDjango-pipe не может получить доступ к файлу. Ошибка доступ

./manage collectstatic

Я получаю следующее сообщение об ошибке ..

django.core.exceptions.SuspiciousFileOperation: Attempted access to '/home/darwesh/projects/first/api/static/js/app/check.js' denied. 

Вот мой settings.py файл

# Static files (CSS, JavaScript, Images) 
# https://docs.djangoproject.com/en/1.6/howto/static-files/ 

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'api/static'), 
) 

STATIC_ROOT = os.path.join(BASE_DIR, 'api/static_final/') 

STATIC_URL = '/static/' 

STATIC_PATH = os.path.join(BASE_DIR, 'api/static/') 


# pipeline settings 
STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage' 
PIPELINE_JS = { 
    'check': { 
     'source_filenames' : (
      STATIC_PATH + 'js/app/controllers.js', 
     ), 
     'output_filename': STATIC_PATH + 'js/app/check.js', 
    }, 
} 

Вот моя структура файла

project 
|__api 
    |__static 
     |__js 
     |__app 
      |__ controllers.js 
      |__ check.js # expected output file 

ответ

3

Удалить

STATIC_PATH + 

от обоих source_filenames и output_filename

Я подозреваю причину вы добавили, что было связано с ./manage.py collectstatic не производит выход в вашем js/app каталоге (тот, что вызвало мое замешательство). Чтобы исправить это в settings.py установить

PIPELINE_ENABLED = True # pipeline > 1.3 
#PIPELINE = True # pipeline < 1.3 
STATIC_ROOT = os.path.join(BASE_DIR, 'project/static') # this should also be set 

запустить

./manage.py collectstatic 

вы должны увидеть сгенерированный output_filename

1

Еще одна причина, это может произойти, если вы пропустили запятую в source_filenames кортеж с одним именем файла, которое делает его строкой:

С отсутствующей запятой, ('js/app/controllers.js') - это строка и броски SuspiciousFileOperation:

PIPELINE_JS = { 
    'check': { 
     'source_filenames' : (
      'js/app/controllers.js' 
     ), 
     'output_filename': 'js/app/check.js', 
    }, 
} 

Исправлено:

PIPELINE_JS = { 
    'check': { 
     'source_filenames' : (
      'js/app/controllers.js', 
     ), 
     'output_filename': 'js/app/check.js', 
    }, 
} 
Смежные вопросы