我无法理解和使用Django的ImageField.
我有一个模特:
class BlogContent(models.Model): title = models.CharField(max_length=300) image = models.ImageField(upload_to='static/static_dirs/images/') description = models.TextField()
我的文件系统目前是:
src |---main_project |---app_that_contains_blog_content_model |---static |---static_dirs |---images
当我运行服务器并转到管理员页面时,我可以添加BlogContent对象.为图像字段选择图像后,图像具有临时名称.但是,保存此对象后,我无法在upload_to路径指定的文件夹中找到该图像.
这样做的正确方法是什么?
您的图像将上传到media
文件夹,因此最好更改模型中的路径images/
,然后将其上传到media/images
另外settings.py
这个
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
在 url.py
from django.conf.urls.static import static from django.conf import settings urlpatterns = [.... ]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
然后,如果你想显示所有这些图像,请使用类似的内容 view.py
BlogContent.objects.all()
并像这样呈现:
{% for img in your_object %} {% endfor %}
static
在upload_to
多年平均值是有意义的,因为用户上传的图片进入media/
文件夹..你需要这些:
image = models.ImageField(upload_to='blog/%Y/%m/%d')
所有图像都落在:
media/blog/2016/01/02/img_name.jpg
你在模板中访问它是这样的:
在设置中:
import os BASE_DIR = os.path.dirname(os.path.dirname(__file__)) MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media')