У меня есть базовое приложение для изучения блога, в котором я столкнулся с проблемой: «сообщение в блоге» с изображением, загруженным через админ-форму приложения, отлично работает, пока я не нажму другую версию через герольку. Затем, когда на изображении отобразился сломанный значок img, и приложение не может найти изображение, даже если цель изображения, когда я смотрю на адрес изображения, будет такой же.Django + Heroku: Изображения работают до следующего Нажмите
Я чувствую, что мне не хватает чего-то принципиально важного в чем-то, поэтому почему я не могу это исправить Google. Кто-нибудь знает, почему я спотыкаюсь здесь, и я даже подхожу к этому правилу?
Я использую Django + Gunicorn + dj-static для обслуживания статических файлов.
Вот модель:
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
picture = models.ImageField(upload_to='blog/static/blog/images')
section = models.ForeignKey('Section')
posted = models.DateTimeField(auto_now_add=True)
posted_by = models.TextField()
tags = models.ManyToManyField('Tag')
def __str__(self):
return self.title
вид:
def detail(request, post_id):
post = Post.objects.get(id=post_id)
picture = post.picture
context = {'post': post, 'picture': picture}
return render(request, 'blog/detail.html', context)
надрез, содержащий HTML изображения:
<hr>
<img src="{{ picture.url }}">
<hr>
settings.py дело со статическими файлами:
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/
STATIC_ROOT = 'staticfiles'
STATIC_URL = '/static/'
BOOTSTRAP3 = {'include_jquery': True}
LOGIN_URL = '/users/login'
MEDIA_ROOT = 'media'
MEDIA_URL = '/media/'
#Herokusettings
if os.getcwd() == '/app':
import dj_database_url
DATABASES = {
'default' : dj_database_url.config(default='postgres://localhost')
}
DEBUG = False
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
ALLOWED_HOSTS = ['*']
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
# Static files (CSS, JavaScript, Images)
# https://docs.djangoprojectcom/en/1.9/howto/static-files/
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media')
MEDIA_URL = '/media/'
# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, 'static'),
)
и wsgi.py:
import os
from django.core.wsgi import get_wsgi_application
from dj_static import Cling, MediaCling
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bss.settings")
application = Cling(get_wsgi_application())
application = Cling(MediaCling(get_wsgi_application()))
#application = get_wsgi_application()
Спасибо за то, что этот взгляд, я чувствую, что я что-то фундаментальное о том, как все это работает без вести.
Спасибо! Я исследую это! – InspectorBean