2014-10-05 3 views
3

내가 자산 축소를 압축을위한 장고 - 파이프 라인을 사용하지만 실행하려고하면 오류가있을 것입니다장고 파이프 라인에서 파일에 액세스 할 수 없습니다. 액세스 거부 오류

./manage collectstatic

나는 다음과 같은 오류가 ..

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

여기 여기

# 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', 
    }, 
} 

내 파일 구조

내 settings.py 파일입니다
project 
|__api 
    |__static 
     |__js 
     |__app 
      |__ controllers.js 
      |__ check.js # expected output file 

답변

3

난 당신이 그 ./manage.py collectstaticjs/app 디렉토리에 출력을 생성하지 때문 추가 한 이유를 의심 모두 source_filenamesoutput_filename

에서

STATIC_PATH + 

를 제거 (내 혼란의 원인을 먹으 렴). 당신이 source_filenames 튜플에 쉼표 누락하는 경우 settings.py에서이 당신이이 발생할 수 생성 된 output_filename

1

또 다른 이유를 볼 수

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 

을 설정 해결하려면 것은 하나의 파일 이름으로 문자열이됩니다 :

쉼표가없는 경우 ('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', 
    }, 
}