简体   繁体   English

Django的。 如何在模板中显示图像

[英]Django. How to display image in template

How to display image in template? 如何在模板中显示图像?

I try something like this (but doesn't work): 我尝试这样的事情(但不起作用):

This is my model: 这是我的模特:

from django.db import models

class Photo(models.Model):
    title = models.CharField(max_length=255)
    img = models.ImageField(upload_to="media/galery")

    class Meta:
        verbose_name = "Galery"
        verbose_name_plural = "Galery"

    def __unicode__(self):
        return self.title

views.py views.py

from django.shortcuts import render_to_response
from django.template import RequestContext

from kolejny.galery.models import Photo

def photo(request):
    photos = Photo.objects.all()
    return render_to_response('photo.html', {'photos' : photos}, context_instance=RequestContext(request))

photo.html photo.html

{% for p in photos  %}
<img src="{{ p.img.url }}"/>
{% endfor %}

urls.py urls.py

urlpatterns = patterns('',
    # Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls)),
    url(r'^photo/$', 'galery.views.photo'),
    url(r'^site_media/(.*)$', 'django.views.static.serve', {'document_root' : os.path.join(os.path.dirname(__file__), 'site_media')}),
)

settings.py: settings.py:

MEDIA_ROOT = ''
MEDIA_URL = ''
STATIC_ROOT = ''
STATIC_URL = '/static/'

How to fix it? 怎么解决?

set your MEDIA_ROOT variable to point to the folder where the actual images are, like: 将MEDIA_ROOT变量设置为指向实际图像所在的文件夹,如:

MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'site_media')

and the line in urls.py to point to the same folder: 和urls.py中的行指向同一个文件夹:

url(r'^site_media/(.*)$', 'django.views.static.serve', {'document_root' : settings.MEDIA_ROOT}),

and MEDIA_URL: 和MEDIA_URL:

MEDIA_URL = '/site_media/'

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

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