简体   繁体   English

如何显示从 django 管理员上传到 heroku 的图像?

[英]How to display images uploaded from django admin to heroku?

I deployed my django project on heroku.我在 heroku 上部署了我的 django 项目。 The site is all working well except for the fact that some images are broken.除了一些图像损坏之外,该网站一切正常。 These images are all images which I uploaded to my site in local server via the django admin.这些图片都是我通过 django 管理员上传到我在本地服务器上的网站的图片。 These images were uploaded to my site on local server by providing the url in image field in django admin page.这些图像通过在 django 管理页面的图像字段中提供 url 上传到我在本地服务器上的站点。 All the images which are hard coded in the html code and are static/images folder in my project are displayed.显示在 html 代码中硬编码并且是我项目中的静态/图像文件夹的所有图像。 Any changes I should make to my settings.py file to dipslay these pictures?我应该对我的 settings.py 文件进行任何更改以显示这些图片吗? How to resolve this?如何解决这个问题?

My settings.py file我的 settings.py 文件

"""
Django settings for ecommerce project.

Generated by 'django-admin startproject' using Django 2.2.

For more information on this file, see
https://docs.djangoproject.com/en/2.2/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.2/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'gm1zyhprh9=9+4@vu*^8g30(pg*xq6e@0z1)h81hc2evd7n*^v'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

ALLOWED_HOSTS = ['market-shaurya.herokuapp.com', '127.0.0.1']


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django_filters',
    'store.apps.StoreConfig',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',

    'whitenoise.middleware.WhiteNoiseMiddleware',

    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'ecommerce.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'ecommerce.wsgi.application'


# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


# Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]


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

my store.html templates file我的商店.html 模板文件

{% extends 'store/main.html' %}
{% load static %}

{% block content %}
    <div class="row">

        {% for product in products %}
            <div class="col-lg-4">
                <img class="thumbnail" src="{{product.imageURL}}">
                <div class="middle">
                    <div class="text"><strong><strong>{{product.description}}</strong></strong></div>
                </div>
                <div class="box-element product">
                    <h6><strong>{{product.name}}</strong></h6>
                    <hr>

                    <button data-product="{{product.id}}" data-action="add" class="btn btn-outline-secondary add-btn update-cart">Add to Cart</button>

                    <a class="btn btn-outline-success" href="#">View</a>
                    <h4 style="display: inline-block; float: right"><strong>₹{{product.price|floatformat:2}}</strong></h4>
                </div>
            </div>
        {% endfor %}
    </div>
{% endblock content %}

notice this src="{{product.imageURL}}. This is how I uploaded pictures to this cart.注意这个 src="{{product.imageURL}}。这就是我将图片上传到此购物车的方式。

DEBUG = True

This solves the problem.这解决了问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM