3

我正在使用 Django-pipeline 进行资产缩小和压缩,但是当我尝试运行时似乎出现错误

./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
4

2 回答 2

3

消除

STATIC_PATH +

从两者source_filenamesoutput_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

于 2014-12-07T03:11:24.517 回答
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',
    },
}
于 2016-10-04T13:05:40.933 回答