【问题标题】:Python / Django - problems with serving media files (which do not appear in the folder)Python / Django - 提供媒体文件的问题(未出现在文件夹中)
【发布时间】:2016-02-02 08:54:36
【问题描述】:

尝试通过 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”,不是吗?

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 面板中看到它们作为添加的图像列表。

我搜索了很多,但看起来我错过了一些重要的东西,但无法得到确切的内容。将不胜感激。

【问题讨论】:

  • os.path.dirname(BASE_DIR) 实际上上升了一级,因此您可能将图像存储在项目根目录之外。检查并告诉我们。
  • 你的意思是,它可能会在项目之外创建一个 static_in_dev/media/ 文件夹?我今天肯定会检查它(虽然目前没有机会这样做)。
  • 是的,我就是这个意思。让我们知道这是否对您有用,以便我做出详细的回答。
  • project_folder/static_in_dev/media_root, project_folder 中是你的项目还是你的应用文件夹?您还应该播种BASE_DIR 设置。
  • 谢谢您,我今天一定会检查一下,如果有效,请告诉您。

标签: python django django-models django-admin django-media


【解决方案1】:

应从您的项目文件夹结构中定义MEDIA_ROOT

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

因为static_in_dev 文件夹在您的项目目录中,即BASE_DIR

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 2021-11-06
    相关资源
    最近更新 更多