изображения из медиа-файла не будут отображаться в шаблоне django
Я новичок в django, и я играл с загрузкой фотографий, а затем отображал их. ... ну!--7-->попытка, чтобы отобразить их.
всякий раз, когда я пытаюсь отобразить изображение из шаблона, я просто сломанный значок изображения.
Я использую сервер sqlite3
settings.py
ROOT_DIR = os.path.dirname(os.path.dirname(__file__))
def location(f):
return os.path.join(ROOT_DIR, f)
MEDIA_URL = 'http://127.0.0.1:8000/media/'
MEDIA_ROOT = location('media/')
models.py
class Image(models.Model):
image = models.ImageField(upload_to = 'images/')
views.py
from imageupload.settings import MEDIA_ROOT, MEDIA_URL
def main(request):
imgs = Image.objects.all()
return render_to_response('index.html', {'images': imgs, 'media_root': MEDIA_ROOT, 'media_url': MEDIA_URL})
url.py
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
прямо сейчас я только что использовал администратор для загрузки изображений. И это, кажется, работает нормально, они идут туда, где я ожидаю
но когда я пытаюсь отобразить их:
шаблон
<!DOCTYPE html>
<html>
<img src="<correct path to project>/media/images/photo_1.JPG" />
{% for img in images %}
<img src="{{ media_root }}{{ img.image.name }}" />
<img src="{{ media_url }}{{ img.image.name }}" />
<img src="{{ img.image.url }}" />
{% endfor %}
</html>
Я сломанный значок для каждого из них.
Исходный код браузера показывает мне:
<!DOCTYPE html>
<html>
<img src="<correct path to project>/media/images/photo_1.JPG" />
<img src="<correct path to project>/media/images/photo_1.JPG" />
<img src="http://127.0.0.1:8000/media/images/photo_1.JPG" />
<img src="http://127.0.0.1:8000/media/images/photo_1.JPG" />
</html>
это имеет смысл, у меня только одна фотография загружена.
и если я скопирую одну из жестких ссылок и помещу ее в другой html-файл ...она работает
2 ответов
Oh FFS....
aperently это
MEDIA_URL = '/media/'
не
MEDIA_URL = 'http://127.0.0.1:8000/media/'
...несмотря #'http://127.0.0.1:8000/media/'
пишут прямо рядом с ним
рабочая ссылка img выглядит так:
<img src="/media/images/photo_1.JPG" />
вам определенно нужна:
static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
в файле url также
если вы ищете для отображения изображений в среде разработки, попробуйте это:
settings.py
SITE_ROOT = os.path.realpath(os.path.dirname(__file__))
MEDIA_ROOT = os.path.join(SITE_ROOT, 'static')
MEDIA_URL = '/static/'
STATIC_ROOT = os.path.join(SITE_ROOT, 'statics')
STATIC_URL = '/statics/'
urls.py
# somebody import this from settings
SITE_ROOT = os.path.realpath(os.path.dirname(__file__))
urlpatterns += patterns('',
url(r'^static/(?P<path>.*)$','django.views.static.serve',
{'document_root': os.path.join(SITE_ROOT, 'static')})
)
html view file *.HTML-код:
<img src="{{ MEDIA_URL }}img/content_top_edit_form.png">
это означает, что у нас есть img папка в статической папке. в вашем случае вы можете изменить это
если вы видите, что ваш браузер html должен быть виден так:
<img src="/static/img/content_top_edit_form.png">