在模板中确定文件是否实际存在是相当困难的。这将是视图的工作,假设它{{web.image}}
实际上首先返回任何东西。
def my_view(request):
# some code here
import os
if os.path.exists(web.image_path): # for example
context = { 'web': web }
render_to_response('my_template.html', context, RequestContext(request)
这假设您实际上知道图像文件的完整文件系统路径是什么。情况并非总是如此,尤其是 django 1.3 中的 staticfiles 应用程序。
但是,我会更担心有时图像存在,有时它们不存在。为什么会这样?图像是否因某种原因被删除?如果是,您需要一种清理数据库的方法。
编辑:
由于似乎还没有你喜欢的答案,你应该试试这个:
import os
class MyModel(models.Model):
image = models.Image...
# the rest of your fields
def get_image_url(self):
if os.path.exists(self.image.path):
return u'/%s/img/%s' % (self.app_label, self.image.filename)
return u'%s/img/default.jpg' % self.app_label
然后在您的模板中执行以下操作:
<img src="{{ STATIC_URL }}{{ web.get_image_url }}" />