Python / Django - 提供媒体文件的问题(不出现在文件夹中)
Python / Django - problems with serving media files (which do not appear in the folder)
尝试通过 admin.py 添加媒体文件,它们没有出现在它们应该出现的文件夹中。这是我的代码:
settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static_in_dev', 'media_root')
据我了解,这意味着所有下载的媒体文件都应该保存在 project_folder/static_in_dev/media_root
models.py
class GalleryCupsModel(models.Model):
photo = models.ImageField(upload_to='cups/%Y/%m/%d')
这应该会在 media_root 文件夹中创建文件夹 'cups' 和 year/month/day,不是吗?
admin.py
class GalleryCupsAdmin(admin.ModelAdmin):
list_display = ['photo']
admin.site.register(GalleryCupsModel, GalleryCupsAdmin)
urls.py
urlpatterns = [
url(r"^cups/all/$", "gallery_cups.views.cups", name="cups"),
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
项目树
├── gallery_cups
│ ├── migrations
│ │ └── __pycache__
│ └── __pycache__
├── LC
│ └── __pycache__
├── static_in_dev
│ ├── media
│ ├── media_root
│ ├── my_static
│ │ ├── css
│ │ ├── img
│ │ └── js
│ └── static_root
│ ├── admin
│ │ ├── css
│ │ ├── fonts
│ │ ├── img
│ │ │ └── gis
│ │ └── js
│ │ ├── admin
│ │ └── vendor
│ │ ├── jquery
│ │ └── xregexp
│ ├── css
│ ├── img
│ │ ├── header
│ │ └── portfolio
│ └── js
└── templates
问题是我通过 admin.py 上传的文件没有出现在 project_folder/static_in_dev/media_root 中,尽管我在 admin.py 面板中看到它们作为添加图像的列表.
我搜索了很多,但看起来我错过了一些重要的东西,但无法得到确切的东西。如有任何帮助,我们将不胜感激。
从您的项目文件夹结构 MEDIA_ROOT
应该定义:
MEDIA_ROOT = os.path.join(BASE_DIR, 'static_in_dev', 'media_root')
因为 static_in_dev
文件夹在您的项目目录中,即 BASE_DIR
.
尝试通过 admin.py 添加媒体文件,它们没有出现在它们应该出现的文件夹中。这是我的代码:
settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static_in_dev', 'media_root')
据我了解,这意味着所有下载的媒体文件都应该保存在 project_folder/static_in_dev/media_root
models.py
class GalleryCupsModel(models.Model):
photo = models.ImageField(upload_to='cups/%Y/%m/%d')
这应该会在 media_root 文件夹中创建文件夹 'cups' 和 year/month/day,不是吗?
admin.py
class GalleryCupsAdmin(admin.ModelAdmin):
list_display = ['photo']
admin.site.register(GalleryCupsModel, GalleryCupsAdmin)
urls.py
urlpatterns = [
url(r"^cups/all/$", "gallery_cups.views.cups", name="cups"),
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
项目树
├── gallery_cups
│ ├── migrations
│ │ └── __pycache__
│ └── __pycache__
├── LC
│ └── __pycache__
├── static_in_dev
│ ├── media
│ ├── media_root
│ ├── my_static
│ │ ├── css
│ │ ├── img
│ │ └── js
│ └── static_root
│ ├── admin
│ │ ├── css
│ │ ├── fonts
│ │ ├── img
│ │ │ └── gis
│ │ └── js
│ │ ├── admin
│ │ └── vendor
│ │ ├── jquery
│ │ └── xregexp
│ ├── css
│ ├── img
│ │ ├── header
│ │ └── portfolio
│ └── js
└── templates
问题是我通过 admin.py 上传的文件没有出现在 project_folder/static_in_dev/media_root 中,尽管我在 admin.py 面板中看到它们作为添加图像的列表.
我搜索了很多,但看起来我错过了一些重要的东西,但无法得到确切的东西。如有任何帮助,我们将不胜感激。
从您的项目文件夹结构 MEDIA_ROOT
应该定义:
MEDIA_ROOT = os.path.join(BASE_DIR, 'static_in_dev', 'media_root')
因为 static_in_dev
文件夹在您的项目目录中,即 BASE_DIR
.