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 885中的文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ base.py”.current = current [bit]
在处理上述异常期间('ImageFieldFile'对象不可订阅),发生了另一个异常:
内部39中的文件“D:\ virtualEnv \ lib \ site-packages \ django \ core \ handlers \ exception.py”response = get_response(request)
文件“D:\ virtualEnv \ lib \ site-packages \ django \ core \ handlers \ base.py”在_get_response 217. response = self.process_exception_by_middleware(e,request)
_get_response 215中的文件“D:\ virtualEnv \ lib \ site-packages \ django \ core \ handlers \ base.py” . response = response.render()
文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ response.py”在render 109中.self.content = self.rendered_content
render_content中的文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ response.py”86. content = template.render(context,self._request)
渲染66中的文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ backends \ django.py” . 返回self.template.render(context)
在渲染208中输入文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ base.py” . 返回self._render(context)
在_render 199中输入文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ base.py” . return self.nodelist.render(context)
渲染994中的文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ base.py”.bit = node.render_annotated(context)
在render_annotated 961中输入文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ base.py” . return self.render(context)
渲染61中的文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ loader_tags.py” . result = self.nodelist.render(context)
渲染994中的文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ base.py”.bit = node.render_annotated(context)
在render_annotated 961中输入文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ base.py” . return self.render(context)
在渲染器323中输入文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ defaulttags.py” . 返回nodelist.render(context)
渲染994中的文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ base.py”.bit = node.render_annotated(context)
在render_annotated 961中输入文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ base.py” . return self.render(context)
在渲染217.文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ defaulttags.py”中nodeList.append(node.render_annotated(context))
在render_annotated 961中输入文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ base.py” . return self.render(context)
文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ base.py”在render 1044中.output = self.filter_expression.resolve(context)
在解析711中的文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ base.py”.obj = self.var.resolve(context)
解析852中的文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ base.py”.value = self._resolve_lookup(context)
_resolve_lookup 893中的文件“D:\ virtualEnv \ lib \ site-packages \ django \ template \ base.py”.current = getattr(current,bit)
_get_url 68中的文件“D:\ virtualEnv \ lib \ site-packages \ django \ db \ models \ fields \ files.py” . self._require_file()
_require_file中的文件“D:\ virtualEnv \ lib \ site-packages \ django \ db \ models \ fields \ files.py”46 . 引发ValueError(“'%s'属性没有与之关联的文件 . ”%self . field.name)
异常类型:ValueError at / Exception值:'photo'属性没有与之关联的文件 .
我的意见:
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)
为什么photo field会出现这些错误?
1 回答
我在模型中使用Stackoverflow的答案解决了这个问题:
在模板中,使用default_if_none作为默认网址:
经过多次搜索和花费多次,这实际上为我提供了正确的答案 .
希望它能帮助其他人在django模板中加载图像 .