我是Django的绝对初学者,所以这是我的问题:
我创建了一个模型,我有image = models.ImageField()
。当我使用管理界面时,每个上传的图像都放在根目录中。
我仔细阅读了此https://docs.djangoproject.com/en/dev/topics/files/,如果我使用下面的示例,它仍然无效。
from django.core.files.storage import FileSystemStorage
fs = FileSystemStorage(location='/static/images/gallery')
class Car(models.Model):
...
photo = models.ImageField(storage=fs)
新条目已正确添加但当我单击图像名称时,会显示以下错误,并且图像未放置在/ static / images / gallery
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/Library/book/12/change/002_user_experience_remastered.jpg/change/
Raised by: django.contrib.admin.options.change_view
book object with primary key '12/change/002_user_experience_remastered.jpg' does not exist.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
我写的代码:
from django.core.files.storage import FileSystemStorage
fs = FileSystemStorage(location='/static/images/gallery')
class book(models.Model):
name = models.CharField(max_length=128, unique=True)
authors = models.CharField(max_length=128)
language = models.CharField(max_length=128)
otherDetails = models.URLField()
availableCopies = models.IntegerField()
borrowUntilDate = models.DateField()
image = models.ImageField(storage=fs)
commentName = models.CharField(max_length=128)
commentText = models.CharField(max_length=2048)
slug = models.SlugField(unique=True)
我的项目具有以下配置:
..\Services
Services
Library (my app)
static
templates
venvs
从管理界面我从C:\ pics加载图片,我希望它们存储在.. \ Services \ Library \ static \ images \ gallery文件夹中。
我做错了什么?我错过了什么?
谢谢!
答案 0 :(得分:0)
来自文件:
在开发过程中,您可以使用MEDIA_ROOT
视图从django.contrib.staticfiles.views.serve()
投放用户上传的媒体文件。
这不适合生产使用!有关常见的部署策略,请参阅Deploying static files。
例如,如果您的MEDIA_URL
定义为/media/
,则可以通过将以下代码段添加到urls.py
来执行此操作:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
答案 1 :(得分:0)
您需要在FileSystemStorage
位置指定文件夹的绝对路径,如果尚未在设置中设置base_url
,则还需提供MEDIA_URL
。
fs = FileSystemStorage(
location='C:/.../Services/Library/static/images/gallery',
base_url='/gallery/'
)
参考文献: FileSystemStorage