如何避免使用Django中的缓存文件拒绝权限?

时间:2019-03-25 17:01:22

标签: django caching django-settings

每次我不得不去删除所有文件的根访问权限并使用chown user_name:user_group *授予当前用户访问权限时,我都会从django网站上不断遇到此问题。但是在网站生成一些新的缓存文件后,问题又回来了。

Internal Server Error: /

PermissionError at /
[Errno 13] Permission denied:'/var/tmp/project_cache/a92ccb8f0f5dc3d17dbaae74ac7.djcache'

我使用基于文件的Django缓存。这是我的设置

CACHES = {
'default': {
    'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
    'LOCATION': '/var/tmp/project_cache',
    'TIMEOUT': 60 * 15,
    'OPTIONS': {
        'MAX_ENTRIES': 1000
    }
}
}

我永远不需要用户缓存文件吗?

1 个答案:

答案 0 :(得分:0)

/tmp//var/tmp/ 可由所有用户写入。

我要求 Django 为每个用户创建一个文件夹,这样我就不会被 [Errno 13] Permission denied 打扰。

import os
from pwd import getpwuid

__USERNAME = getpwuid(os.getuid()).pw_name

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': f'/tmp/{__USERNAME}-django/',
    },
}

例如,将分别创建 /tmp/ubuntu-django//tmp/www-data-django/