在模板标记 Django 中处理媒体图像时出错 Python

Error handling media images in tamplate tagging Django Python

我觉得我忽略了一些小东西,但我正在尝试使用模板标记显示上传的服装媒体文件:

INSTALLED_APPS

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'apparelapp',
    'import_export',
]

settings.py

MEDIA_DIR = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'
MEDIA_ROOT = "MEDIA_DIR"

models.py

class Uniform(models.Model):
    category = models.CharField(choices = CATEGORY_CHOICES, max_length=11)
    description = models.CharField(max_length = 50)
    price = models.FloatField(max_length = 6)
    size = models.CharField(choices=CLOTHES_SIZE, max_length=4, blank=True)
    style = models.CharField(choices=STYLE_CHOICES, max_length=15, blank=True)
    image = models.ImageField(upload_to='uniforms/')

html

  <div class="row wow fadeIn">
    {% for item in uniform %}
        <div class="col-lg-3 col-md-6 mb-4">
            <div class="card">
                <div class="view overlay">
                    <img src="{{ item.image.url }}" alt="Oh no!">
                    <a>
                        <div class="mask rgba-white-slight"></div>
                    </a>
                </div>
                <div class="card-body text-center">
                    <label>
                        <h5>{{ item.description }}</h5>
                    </label>
                    <h5>
                        {% if item.description %}
                        <strong>
                            <label for="">{{ item.category }}</label>
                        </strong>
                    </h5>
                    {% endif %}
                </div>
            </div>
        </div>
    {% endfor %}

即使检查页面我也得到以下信息:

路径在我看来都是正确的,甚至 settings.py 设置并上传了我的 Uniform 模型的 image 对象路径。我错过了什么吗? 我查看了其他一些帖子,并在 urls.py 中看到了一条建议,包括:

from django.conf.urls.static import static

urlpatterns = [
...
]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

仍然没有运气

我认为您必须确保完成所有这些步骤:

  • "django.contrib.staticfiles" 包含在您的 INSTALLED_APPS
  • 在您的设置中定义 STATIC_URL STATIC_URL = '/static/'
  • 在模板中使用 {% load staticfiles %}

为确保其正常工作:
尝试打开http:localhost:8000/static/media/your_image.png
您应该只能看到图像。

尝试使用:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'

没有MEDIA_DIR(不像STATICFILES_DIRS),你还应该将MEDIA_ROOT设置为字符串,而不是列表.