首页 > 解决方案 > DJANGO - [Errno 30] 只读文件系统:'/media'

问题描述

我收到有关 Django 上媒体目录的错误。

表格.py

from django.forms import ModelForm
from .models import Mots
from django import forms


class CreeMot(ModelForm):
    mot = forms.CharField(max_length=50)
    level = forms.IntegerField(max_value=10)
    image = forms.FileField()

    class Meta:
        model = Mots
        fields = ["mot", "level", "image"]

视图.py

def cree_mot(request):
    if request.method == "POST":
        form = CreeMot(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/success/url/')
    else:
        form = CreeMot()
    return render(request, "cp/cree_mot.html", {'form': form})

设置.py

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
# Add these new lines
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_ROOT = os.path.join(BASE_DIR, 'staticfiles', 'media_root')

提交表单时,我收到此错误:

[Errno 30] Read-only file system: '/media'

其实我的/media/目录是在同一级别/static/

cp
  /views.py
  /forms.py
main_app
  /settings.py
  /...
media
static
manage.py

我把我/media/的 777 chmod。

标签: pythondjangomedia

解决方案


您应该删除并只留下基础人员来了解您的应用程序中发生了什么。首先,在您的情况下,删除

MEDIA_ROOT = os.path.join(BASE_DIR, 'staticfiles', 'media_root')

并留下通往媒体之路的路径,例如:

MEDIA_ROOT = 'path/to/media'

希望对你有帮助


推荐阅读