Errno - 13 权限被拒绝:'/media/ - Django

Rah*_*dav 4 python django ubuntu django-models permission-denied

我在 ubuntu 中使用 Django 3.1,

我上传媒体文件时出错

PermissionError at /admin/main/artist/1/change/
[Errno 13] Permission denied: '/media/artists'

Exception Type: PermissionError
Exception Value:    
[Errno 13] Permission denied: '/media/artists'
Exception Location: /usr/lib/python3.8/os.py, line 223, in makedirs
Python Executable:  /home/rahul/.local/share/virtualenvs/music-69qL54Ia/bin/python
Run Code Online (Sandbox Code Playgroud)

这段代码在windows下有效,但在ubuntu下无效

设置.py

STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / 'static']

MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / '/media/'
Run Code Online (Sandbox Code Playgroud)

模型.py

class Artist(models.Model):
    image = models.ImageField(upload_to='artists/%Y/%m/%d/', default='demo-artist.jpg', null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

我尝试过但没有成功

/sf/ask/1525816071/
Run Code Online (Sandbox Code Playgroud)

小智 7

我遇到了同样的错误并使用shell

在您的settings.py文件中: 更改:

MEDIA_ROOT = BASE_DIR / '/media/'
# here, MEDIA_ROOT = '/media/'
Run Code Online (Sandbox Code Playgroud)

到:

MEDIA_ROOT = BASE_DIR / 'media/'
# here, MEDIA_ROOT = 'path-to-project/media/'
Run Code Online (Sandbox Code Playgroud)

我认为发生这种情况是因为您正在尝试加入Linux 中用于安装媒体的目录your project level dir/media/并且会导致权限被拒绝,因为root具有写入权限,您可能没有使用sudo. 因此,您可以删除第一个\以使目录相对。