FileField / ImageFIeld URL没有给我一个HTTP URL

时间:2016-08-31 20:19:32

标签: django django-templates

我有这段代码,其中partner.logo是合作伙伴模型中的ImageField。

{% for m in matches %}
<img src="{{ m.partner.logo }}" alt="" />
<h2><a href="{{ m.partner.url }}">{{ m.partner.name }}</a></h2>
<p>{{ m.reasons }}</p>
<p>{{ m.partner.profile }}</p>
{% endfor %}

现在,Django文档说如果你去m.partner.logo.url,你会得到一个文件的URL。但是,我得到的只是

<img src="/Users/shinichi/Dropbox/source/blastoise/uploads/road-sky-clouds-cloudy.jpg" alt="" />

这实际上是我从m.partner.logo获得的字符串。这不是一个URL,它没有帮助!我期待像http://127.0.0.1:8000/uploads/road-sky-clouds-cloudy.jpg这样的东西。我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

@domino指出MEDIA_URLMEDIA_ROOT上的settings.py可能会遇到一些问题(请查看here)。我给你写了一个例子here。在引用徽标URL时,还有一个重要的细节,您可能需要执行this之类的操作。我的意思是:

{% for partner in partners %} <img src="{{ partner.logo.url }}" alt="" /> <h2><a href="{{ partner.logo.url }}">{{ partner.logo }}</a></h2> {% endfor %}

请务必在urls.py上添加these行,以帮助您在开发时提供media资源,它总是有所帮助。

希望它可以帮助你交配。

答案 1 :(得分:0)

这实际上取决于你在proj / settings.py文件中设置MEDIA_ROOT的内容。在models.py文件中,您可以在upload_to中指定FileField参数。这是documentation

您可以指定其他地方。最受欢迎的是Amazon S3。我将模板设置为阅读

<a href="https://s3-us-west-2.amazonaws.com/fsbo-facebook/{{ house.photo }}" data-lightbox="{{ house.title }}" data-title="{{ house.title }}"><img src="https://s3-us-west-2.amazonaws.com/fsbo-facebook/{{ house.photo }}" alt="{{ house.title }}"></a>

希望这有帮助。