Django - 显示图像

时间:2015-07-22 20:07:09

标签: django

我在显示每个问题的管理页面上传的图像时遇到了困难。在问题的管理页面中,我为每个问题上传图像,并将其保存在正确的目录中。但是,在公共视图中,我无法为每个问题显示这些图像(每个问题将根据我上传的内容显示不同的图像)。 [附后的例子]

enter image description here

以下是代码:

models.py

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    image_movie = models.ImageField(upload_to='static/polls/images', default='static/polls/images')

views.py

def image(request):
    images = Question()
    var = RequestContext(request,{
        'images':images
    })
    return render_to_response('detail.html', var)

detail.html

<form action="{% url 'polls:vote' question.id %}" method="post">{% csrf_token %}

<img src="{{ question.image_movie.url }}" />

{% for choice in question.choice_set.all %}
    <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />
    <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br />
{% endfor %}
<input type="submit" value="Vote" />
</form>

轮询/ urls.py

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.IndexView.as_view(), name='index'),
    url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),
    url(r'^(?P<pk>[0-9]+)/static/polls/images/', views.DetailView.as_view(), name='detail'),
    url(r'^(?P<pk>[0-9]+)/results/$', views.ResultsView.as_view(), name='results'),
    url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, name='vote'),
]

我试图在其他地方找到解决方案,但我没有得到它,不能适用于我的问题。他们是: Django - How can I display a photo saved in ImageField?

Django - Display ImageField

如果你能帮我指出我做错了什么,我真的很感激。

谢谢。

1 个答案:

答案 0 :(得分:1)

我通过将detail.html的代码更改为:

来解决此问题
{% load staticfiles %}
    <img src="{% static question.image_movie.url %}" style="width:500px;height:320px"/>

这意味着图像将被保存并加载到/ static / polls / images中。 (例如:“127.0.0.1/static/polls/images”而不是像以前那样“127.0.0.1/polls/1/static/polls/images”)

系统似乎无法识别“question.id”以显示目录中的图像。