Errno - 13 权限被拒绝:'/media/ - Django
Errno - 13 Permission denied: '/media/ - Django
我在 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
此代码在 windows 中有效,但在 ubuntu
中无效
Settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / 'static']
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / '/media/'
Models.py
class Artist(models.Model):
image = models.ImageField(upload_to='artists/%Y/%m/%d/', default='demo-artist.jpg', null=True, blank=True)
我试过了但是没用
mkdir --mode=777 -pv /home/rahul/.local/share/virtualenvs/music-69qL54Ia/{admin/main/artist/1/change,media/artists}
chmod -R 777 /home/rahul/.local/share/virtualenvs/music-69qL54Ia
也许您忘记将 MEDIA_ROOT 添加到您的 urls.py。
有关更多信息,请查看 docs
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
注意:这不适合生产使用。如果是这样,您可以查看 docs
我遇到了同样的错误并使用 shell
进行了调试
在您的 settings.py
文件中:
变化:
MEDIA_ROOT = BASE_DIR / '/media/'
# here, MEDIA_ROOT = '/media/'
收件人:
MEDIA_ROOT = BASE_DIR / 'media/'
# here, MEDIA_ROOT = 'path-to-project/media/'
我认为发生这种情况是因为您正试图将 your project level dir
加入 linux 中存在的 /media/
目录以用于安装媒体。并且会导致权限被拒绝,因为 root
具有写入权限,您可能 运行 没有 sudo
的所有内容。因此,您可以删除第一个 \
以使目录成为相对目录。
我在 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
此代码在 windows 中有效,但在 ubuntu
中无效Settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / 'static']
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / '/media/'
Models.py
class Artist(models.Model):
image = models.ImageField(upload_to='artists/%Y/%m/%d/', default='demo-artist.jpg', null=True, blank=True)
我试过了但是没用
mkdir --mode=777 -pv /home/rahul/.local/share/virtualenvs/music-69qL54Ia/{admin/main/artist/1/change,media/artists}
chmod -R 777 /home/rahul/.local/share/virtualenvs/music-69qL54Ia
也许您忘记将 MEDIA_ROOT 添加到您的 urls.py。
有关更多信息,请查看 docs
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
注意:这不适合生产使用。如果是这样,您可以查看 docs
我遇到了同样的错误并使用 shell
在您的 settings.py
文件中:
变化:
MEDIA_ROOT = BASE_DIR / '/media/'
# here, MEDIA_ROOT = '/media/'
收件人:
MEDIA_ROOT = BASE_DIR / 'media/'
# here, MEDIA_ROOT = 'path-to-project/media/'
我认为发生这种情况是因为您正试图将 your project level dir
加入 linux 中存在的 /media/
目录以用于安装媒体。并且会导致权限被拒绝,因为 root
具有写入权限,您可能 运行 没有 sudo
的所有内容。因此,您可以删除第一个 \
以使目录成为相对目录。