My images product images weren't showing, not even the image not found error, my media_root was a directory above the project-root, So I thought cahnging the media_root to project root/public/media may change that , but the I get the error:
SuspiciousFileOperation at /index/
The joined path (.../barbaranew/media/media_root/images/products/malaysian1.png) is located outside of the base path component (.../barbaranew/barbaralee_site/public/media)
I have tried makemigrations, migrate, even collect static but none of them sem to work
my settings.py
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.flatpages',
'django_extensions',
'compressor',
'widget_tweaks',
'debug_toolbar',
'layouts',
'crispy_forms',
'envelope',
# 'formtools'
] + get_core_apps(['apps.catalogue'])
SITE_ID = 1
MIDDLEWARE_CLASSES = (
'debug_toolbar.middleware.DebugToolbarMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'oscar.apps.basket.middleware.BasketMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
)
ROOT_URLCONF = 'barbaralee_site.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
os.path.join(BASE_DIR, 'templates', 'layouts'),
os.path.join(BASE_DIR, 'templates', 'layouts', 'barbaralee'),
OSCAR_MAIN_TEMPLATE_DIR
],
'OPTIONS': {
'loaders': (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
),
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'oscar.apps.search.context_processors.search_form',
'oscar.apps.promotions.context_processors.promotions',
'oscar.apps.checkout.context_processors.checkout',
'oscar.apps.customer.notifications.context_processors.notifications',
'oscar.core.context_processors.metadata',
],
},
},
]
WSGI_APPLICATION = 'barbaralee_site.wsgi.application'
# Database
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
AUTHENTICATION_BACKENDS = (
'oscar.apps.customer.auth_backends.EmailBackend',
'django.contrib.auth.backends.ModelBackend',
)
# Internationalization
# https://docs.djangoproject.com/en/1.8/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Africa/Nairobi'
USE_I18N = True
USE_L10N = True
USE_TZ = True
STATIC_URL = '/static/'
# STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static", "static_root")
STATIC_ROOT = location('public/static')
STATICFILES_DIRS = (
location('static/'),
location('static/layouts')
)
MEDIA_URL = '/media/'
# MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media", "media_root")
MEDIA_ROOT = os.path.join(BASE_DIR, 'public', 'media')
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.simple_backend.SimpleEngine',
},
}
COMPRESS_DEBUG_TOGGLE = False
COMPRESS_CSS_COMPRESSOR = 'compressor.css.CssCompressor'
COMPRESS_JS_COMPRESSOR = 'compressor.js.JsCompressor'
COMPRESS_PRECOMPILERS = ()
COMPRESS_PARSER = 'compressor.parser.AutoSelectParser'
OSCAR_INITIAL_ORDER_STATUS = 'Pending'
OSCAR_INITIAL_LINE_STATUS = 'Pending'
OSCAR_ORDER_STATUS_PIPELINE = {
'Pending': ('Being processed', 'Cancelled',),
'Being processed': ('Processed', 'Cancelled',),
'Cancelled': (),
}
DEBUG_TOOLBAR_PATCH_SETTINGS = False
DEBUG_TOOLBAR_PANELS = [
'debug_toolbar.panels.versions.VersionsPanel',
'debug_toolbar.panels.timer.TimerPanel',
'debug_toolbar.panels.settings.SettingsPanel',
'debug_toolbar.panels.headers.HeadersPanel',
'debug_toolbar.panels.request.RequestPanel',
'debug_toolbar.panels.sql.SQLPanel',
'debug_toolbar.panels.staticfiles.StaticFilesPanel',
'debug_toolbar.panels.templates.TemplatesPanel',
'debug_toolbar.panels.cache.CachePanel',
'debug_toolbar.panels.signals.SignalsPanel',
'debug_toolbar.panels.logging.LoggingPanel',
'debug_toolbar.panels.redirects.RedirectsPanel',
]
INTERNAL_IPS = ['127.0.0.1']
PAYPAL_API_USERNAME = 'email'
PAYPAL_API_PASSWORD = 'paasss'
PAYPAL_API_SIGNATURE = 'paasss'
PAYPAL_CURRENCY = 'USD'
OSCAR_RECENTLY_VIEWED_COOKIE_LIFETIME = 2419200
OSCAR_BASKET_COOKIE_LIFETIME = 2419200
OSCAR_FROM_EMAIL = 'alne...@gmail.com'
OSCAR_DEFAULT_CURRENCY = 'USD'
OSCAR_UPLOAD_ROOT = os.path.join(BASE_DIR, 'tmp')
# EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'alne...@gmail.com'
EMAIL_HOST_PASSWORD = ''
EMAIL_PORT = 587
EMAIL_USE_TLS = True
# EMAIL_HOST = 'smtp.live.com'
# EMAIL_HOST_USER = 'alfie...@hotmail.com'
# EMAIL_HOST_PASSWORD = ''
# EMAIL_PORT = 25
# EMAIL_USE_TLS = True
TEMPLATE_DEBUG = True
THUMBNAIL_DEBUG = True
OSCAR_ALLOW_ANON_CHECKOUT = False
OSCAR_SEND_REGISTRATION_EMAIL = True
DEFAULT_FROM_EMAIL = 'alne...@gmail.com'
OSCAR_DASHBOARD_NAVIGATION += [
{
'label': 'Store manager',
'children': [
{
'label': 'Stores',
'url_name': 'your-reverse-url-lookup-name',
},
]
},
]
MESSAGE_TAGS = {
messages.DEBUG: 'debug',
messages.INFO: 'info',
# messages.SUCCESS: 'success',
messages.WARNING: 'warning',
messages.ERROR: 'danger' # 'error' by default
}
OSCAR_MISSING_IMAGE_URL = MEDIA_URL + 'image_not_found.jpg'
try:
from settings_local import *
except ImportError:
pass