【发布时间】:2017-01-04 18:25:03
【问题描述】:
Template error:
在模板 D:\virtualEnv\alumni\member\templates\member\index.html 中,第 15 行出错
The 'photo' attribute has no file associated with it. 5 : <!-- Albums -->
6 : <div class="row">
7 : <div class="col-sm-12">
8 : <h3>{{ user.username }}'s Albums</h3>
9 : </div>
10 : {% if all_persons %}
11 : {% for person in all_persons %}
12 : <div class="col-sm-4 col-lg-2">
13 : <div class="thumbnail">
14 : <a href="{% url 'member:detail' person.id %}">
15 : <img src=" {{ person.photo.url }} " class="img-responsive">
16 : </a>
17 : <div class="caption">
18 : <h2>{{ person.name }}</h2>
19 : <h4>{{ person.category }}</h4>
20 :
21 : <!-- View Details -->
22 : <a href="{% url 'member:detail' person.id %}" class="btn btn-primary btn-sm" role="button">View Details</a>
23 :
24 :
25 :
追溯:
_resolve_lookup 中的文件“D:\virtualEnv\lib\site-packages\django\template\base.py” 885. 当前=当前[位]
在处理上述异常('ImageFieldFile'对象不可下标)的过程中,又发生了一个异常:
内部文件“D:\virtualEnv\lib\site-packages\django\core\handlers\exception.py” 39. response = get_response(request)
_get_response 中的文件“D:\virtualEnv\lib\site-packages\django\core\handlers\base.py” 217. response = self.process_exception_by_middleware(e, request)
_get_response 中的文件“D:\virtualEnv\lib\site-packages\django\core\handlers\base.py” 215. response = response.render()
渲染中的文件“D:\virtualEnv\lib\site-packages\django\template\response.py” 109. self.content = self.rendered_content
render_content 中的文件“D:\virtualEnv\lib\site-packages\django\template\response.py” 86. content = template.render(context, self._request)
渲染中的文件“D:\virtualEnv\lib\site-packages\django\template\backends\django.py” 66. return self.template.render(context)
渲染中的文件“D:\virtualEnv\lib\site-packages\django\template\base.py” 208. return self._render(context)
_render 中的文件“D:\virtualEnv\lib\site-packages\django\template\base.py” 199. return self.nodelist.render(context)
渲染中的文件“D:\virtualEnv\lib\site-packages\django\template\base.py” 994. bit = node.render_annotated(context)
render_annotated 中的文件“D:\virtualEnv\lib\site-packages\django\template\base.py” 961. return self.render(context)
渲染中的文件“D:\virtualEnv\lib\site-packages\django\template\loader_tags.py” 61. 结果 = self.nodelist.render(context)
渲染中的文件“D:\virtualEnv\lib\site-packages\django\template\base.py” 994. bit = node.render_annotated(context)
render_annotated 中的文件“D:\virtualEnv\lib\site-packages\django\template\base.py” 961. return self.render(context)
渲染中的文件“D:\virtualEnv\lib\site-packages\django\template\defaulttags.py” 323. 返回nodelist.render(context)
渲染中的文件“D:\virtualEnv\lib\site-packages\django\template\base.py” 994. bit = node.render_annotated(context)
render_annotated 中的文件“D:\virtualEnv\lib\site-packages\django\template\base.py” 961.返回self.render(context)
渲染中的文件“D:\virtualEnv\lib\site-packages\django\template\defaulttags.py” 217. nodelist.append(node.render_annotated(context))
render_annotated 中的文件“D:\virtualEnv\lib\site-packages\django\template\base.py” 961. return self.render(context)
渲染中的文件“D:\virtualEnv\lib\site-packages\django\template\base.py” 1044. 输出 = self.filter_expression.resolve(context)
解析中的文件“D:\virtualEnv\lib\site-packages\django\template\base.py” 711. obj = self.var.resolve(context)
解析中的文件“D:\virtualEnv\lib\site-packages\django\template\base.py” 852. value = self._resolve_lookup(context)
_resolve_lookup 中的文件“D:\virtualEnv\lib\site-packages\django\template\base.py” 893. current = getattr(current, bit)
_get_url 中的文件“D:\virtualEnv\lib\site-packages\django\db\models\fields\files.py” 68. self._require_file()
_require_file 中的文件“D:\virtualEnv\lib\site-packages\django\db\models\fields\files.py” 46. raise ValueError("'%s' 属性没有与之关联的文件。" % self.field.name)
异常类型:ValueError at / 异常值:“照片”属性没有与之关联的文件。
我的观点:
class IndexView(generic.ListView):
template_name = 'member/index.html'
context_object_name = 'all_persons'
def get_queryset(self):
return Person.objects.all()
class DetailView(generic.DetailView):
model = Person
template_name = 'member/detail.html'
class AlbumCreate(CreateView):
model = Person
fields = '__all__'
我的模型是:
class Person(models.Model):
name = models.CharField(max_length=128)
present_position=models.CharField(max_length=100)
organization= models.CharField(max_length=150,blank=True)
address = models.CharField(max_length=150, blank=True)
tele_land = models.CharField(max_length=15,blank=True)
tele_cell = models.CharField(max_length=15, blank=True)
email = models.EmailField(max_length=70, blank=True, null=True, unique=True)
photo= models.ImageField(upload_to='persons/%Y/%m/%d/',max_length=70, blank=True )
category = models.ForeignKey('Membership', on_delete=models.CASCADE)
def get_absolute_url(self):
return reverse('member:detail', kwargs={'pk': self.pk})
class Membership(models.Model):
category = models.CharField(max_length=50, blank=False)
网址:
from . import views
app_name = 'member'
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),
url(r'member/add/$', views.AlbumCreate.as_view(), name='member-add'),
]
详细模板:
<div class="col-sm-4 col-md-3">
<div class="panel panel-default">
<div class="panel-body">
<a href="{% url 'member:detail' person.id %}">
{% if member.photo %}
<img src="{{ member.photo.url }}" class="img-responsive">
{% else %}
<h3>No image to display</h3>
{% endif %}
</a>
<p>{{member.name}}</p>
<p>{{member.present_position}}</p>
<p>{{member.organization}}</p>
<p>{{member.address}}</p>
<p>{{member.tele_land}}</p>
<p>{{member.tele_cell}}</p>
<p>{{member.email}}</p>
</div>
</div>
</div>
项目网址:
from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from member import urls as member_urls
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include(member_urls, namespace="member")),
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
为什么照片字段会出现这些错误?
【问题讨论】:
标签: django image templates django-models