2017-09-29 4 views
1

Je fais une application simple (Django version 1.11 + python3.5 +). Je souhaite afficher des images sur ma page d'accueil (application Web) depuis les modèles Django. Je peux télécharger avec succès à partir du panneau d'administration Django. Mais l'image ne peut pas être rendue correctement. L'image ne s'affiche pas sur la page d'accueil. Ceci est mon fichier HTML.Pas correctement rendu l'image du modèle Django

{% extends "shop/base.html" %} 
{% block content_area %} 
{% for name in products %} 
<div class="col-lg-3 col-md-3"> 
    <div class="main_content_sidebar"> 
     <div class="content_title"> 
      <h2>{{name.product_name}}</h2> 
     </div> 
     <div class="image_space"> 
      <img src="{{name.product_image.url}}" class="img-thumbnail" alt=""> 
     </div> 
     <div class="content_p"> 
      <p>Retail Price:{{name.product_retail_price}}</p> 
      <p>Quantity: {{name.product_quantity}}</p> 
      <p>Date: {{name.product_sell_date}}</p> 
     </div> 
    </div> 
</div> 
{% endfor %} 
{% endblock %} 

c'est monsite (projet) >> urls.py

from django.conf.urls import url, include 
from django.contrib import admin 
from django.conf.urls.static import static 

from django.conf import settings 
urlpatterns = [ 
    url(r'^shop/',include('shop.urls')), 
    url(r'^admin/', admin.site.urls), 
] 
if settings.DEBUG: 
    urlpatterns += static(settings.MEDIA_URL, 
          document_root=settings.MEDIA_ROOT) 

Ceci est mon fichier models.py.

class ProductsName(models.Model): 
    product_name=models.CharField('name', max_length=50) 
    product_retail_price=models.IntegerField('retail price TAKA') 
    product_quantity = models.IntegerField('quantity') 
    product_sell_date=models.DateTimeField('buy date', auto_now_add=True) 
    product_image = models.ImageField(upload_to='upload/', blank=True, null=True) 

    def __str__(self): 
     return self.product_name 

fichier setting.py

""" 
Django settings for mysite project. 

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

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

For the full list of settings and their values, see 
https://docs.djangoproject.com/en/1.11/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/1.11/howto/deployment/checklist/ 

# SECURITY WARNING: keep the secret key used in production secret! 
SECRET_KEY = '' 

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

ALLOWED_HOSTS = [] 


# Application definition 

INSTALLED_APPS = [ 
    'shop.apps.ShopConfig', 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
] 

MIDDLEWARE = [ 
    'django.middleware.security.SecurityMiddleware', 
    '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 = 'mysite.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 = 'mysite.wsgi.application' 


# Database 
# https://docs.djangoproject.com/en/1.11/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/1.11/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/1.11/topics/i18n/ 

LANGUAGE_CODE = 'en-us' 

TIME_ZONE = 'Asia/Dhaka' 

USE_I18N = True 

USE_L10N = True 

USE_TZ = True 


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

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

Lorsque je visite ma page d'accueil, je ne vois aucune image. Mais je vois le lien de l'image Si j'ouvre mon outil de développement du navigateur. chrome dev tool

si je clique sur ce lien d'image à partir de l'outil de développement chrome. J'ai une erreur django doesn/t found that image url.

également ma structure de dossier est:

monsite boutique manage.py path_to db.sqlite3

+0

En tant que conseil, diffusez jamais la clé secrète en public – deaspo

+0

D'accord. Je l'ai enlevé. –

+0

Quelle est la structure du projet de dossier, le dossier de médias est situé dans? – deaspo

Répondre

0

Le problème est que la votre MEDIA_ROOT n'est pas servi et Django ne peut pas ajouter l'URL correcte. Dans votre projet urls.py ajouter ce qui suit à la fin:

if settings.DEBUG: 
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

Et dans le setttings.py ajouter les chemins corrects pour:

MEDIA_ROOT = os.path.join(BASE_DIR,'path_to_/media_folder') 
MEDIA_URL = '/media/' 
+0

J'ai ajouté ce code après avoir créé le même numéro. L'image ne s'affiche pas. –

+0

S'il vous plaît afficher le code pour mysite.urls @AsaduzzamanSohel – deaspo

+0

monsite urls.py de django.conf.urls importer url, comprennent de django.contrib import admin d'importation django.conf.urls.static statique de django.conf les paramètres d'importation urlpatterns de = [url (r '^/boutique', include ('shop.urls')), url (r '^ admin /', admin.site.urls), ] si settings.DEBUG : urlpatterns + = statique (settings.MEDIA_URL, document_root = settings.MEDIA_ROOT) –