Django ImageField url 在管理视图中不正确
Django ImageField url incorrect in admin view
我有一个模型将图像存储在媒体子目录中,"media/games/"。图像上传到正确的位置,但是当我尝试在管理页面中检索它时,它试图在基本媒体/路径中检索它,并且似乎没有深入到游戏文件夹中,所以如果我看下面:
localhost:8000/media/games/image.png
它会显示图像,但如果我在管理员中并单击图像 link 进行预览,它会尝试在以下位置找到它:
localhost:8000/media/image.png
ImageField 不应该是 "games/image.png" 而不是 "image.png" 吗?我认为图像字段没有正确存储路径。
这是我的文件:
型号:
from django.db import models
from django.core.files.storage import FileSystemStorage
fs = FileSystemStorage(location="media/games/")
class Game(models.Model):
title = models.CharField(max_length=127, unique=True)
slug = models.SlugField(max_length=127, unique=True)
summary = models.TextField(null=True, blank=True)
description = models.TextField(null=True, blank=True)
release_date = models.DateField('date released', null=True, blank=True)
released = models.BooleanField(default=False)
purchase_link = models.URLField(max_length=255, null=True, blank=True)
card_image = models.ImageField(storage=fs, null=True, blank=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.TimeField(auto_now=True)
def __str__(self):
return str(self.title)
网址:
from django.conf.urls import url, include
from django.contrib import admin
from InvenTorrey.settings import base
from django.conf.urls.static import static
from games import urls as game_urls
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^^api/v1/', include(game_urls)),
]
if base.DEBUG is True:
urlpatterns += static(base.MEDIA_URL, document_root=base.MEDIA_ROOT)
设置:
BASE_DIR =
os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
MEDIA_ROOT = os.path.join(BASE_DIR, "media/")
STATIC_ROOT = os.path.join(BASE_DIR,"static/")
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
而不是 storage
参数尝试使用 upload_to
:
card_image = models.ImageField(upload_to='games/', null=True, blank=True)
这允许您将图像保存到 media/games/
目录,并且还将 games/
添加到图像的 url 路径。
我有一个模型将图像存储在媒体子目录中,"media/games/"。图像上传到正确的位置,但是当我尝试在管理页面中检索它时,它试图在基本媒体/路径中检索它,并且似乎没有深入到游戏文件夹中,所以如果我看下面:
localhost:8000/media/games/image.png
它会显示图像,但如果我在管理员中并单击图像 link 进行预览,它会尝试在以下位置找到它:
localhost:8000/media/image.png
ImageField 不应该是 "games/image.png" 而不是 "image.png" 吗?我认为图像字段没有正确存储路径。
这是我的文件:
型号:
from django.db import models
from django.core.files.storage import FileSystemStorage
fs = FileSystemStorage(location="media/games/")
class Game(models.Model):
title = models.CharField(max_length=127, unique=True)
slug = models.SlugField(max_length=127, unique=True)
summary = models.TextField(null=True, blank=True)
description = models.TextField(null=True, blank=True)
release_date = models.DateField('date released', null=True, blank=True)
released = models.BooleanField(default=False)
purchase_link = models.URLField(max_length=255, null=True, blank=True)
card_image = models.ImageField(storage=fs, null=True, blank=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.TimeField(auto_now=True)
def __str__(self):
return str(self.title)
网址:
from django.conf.urls import url, include
from django.contrib import admin
from InvenTorrey.settings import base
from django.conf.urls.static import static
from games import urls as game_urls
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^^api/v1/', include(game_urls)),
]
if base.DEBUG is True:
urlpatterns += static(base.MEDIA_URL, document_root=base.MEDIA_ROOT)
设置:
BASE_DIR =
os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
MEDIA_ROOT = os.path.join(BASE_DIR, "media/")
STATIC_ROOT = os.path.join(BASE_DIR,"static/")
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
而不是 storage
参数尝试使用 upload_to
:
card_image = models.ImageField(upload_to='games/', null=True, blank=True)
这允许您将图像保存到 media/games/
目录,并且还将 games/
添加到图像的 url 路径。