我是Python和Django的新手,所以也许有人可以指出我正确的方向。
我有以下url.py行
url(r'^$', direct_to_template,
{'template':'index.html',
'extra_context':{'featured_actors': lambda: User.objects
.annotate(avatars_nb=Count('avatar'))
.filter(actor_profile__is_featured=True, avatars_nb__gt=0)
.order_by('?')[:4]},
}, name='index'),
所有这一切都很好地工作了很长时间但是我没有理由突然看到我得到这个模板错误。
TemplateSyntaxError at /
Caught an exception while rendering: (36, 'File name too long')
第70行
66 {% if featured_actors|length %}
67 <div id="featured">
68 <h2>Featured Actors: </h2>
69 <ul>
70 {% for actor in featured_actors %}
71 <li>
72 <a href="{% url public_profile actor.username %}">
73 <img src="{% avatar_itself_url actor.avatar_set.all.0 200 %}" alt="{{ actor.profile.firstname }} {{ actor.profile.lastname }}" style="max-width:140px" height="200"/>
74 </a>
75 </li>
76 {% endfor %}
调试此方法的最佳方法是什么?
更新
126 def avatar_url(self, size):
127 return self.avatar.storage.url(self.avatar_name(size))
我想我发现了一些问题,其中一个用户配置文件也给出了同样的错误。所以我认为它必须是一个过长的头像/图像路径。我正试图缩小它......
答案 0 :(得分:2)
图像路径{% avatar_itself_url actor.avatar_set.all.0 200 %}
可能太长。您可以删除<img ...
行并查看模板是否呈现?
如果以上呈现,您可以从python manage.py shell
验证图片路径的长度吗?长度是否大于255个字符?
回答评论
您的图片路径太长了,我的意思是:
<img src="/this/is/a/very/long/path/which/exceeds/255/characters/something.png" />
以上不是255个字符,但你明白了。上面的src路径可能很长。尝试找出该路径是什么并计算其长度。 avatar_itself_url
的实现是什么样的? Avatar
的unicode怎么样?它返回了什么?你有一个名字很长的阿凡达吗?
复制错误消息
以下是如何从python复制错误消息。在python脚本中运行以下命令:
long_filename = 'a' * 256
fp = open(long_filename, 'w')
fp.close()
上面应该返回msg:IOError: [Errno 36] File name too long:
。
显示图片路径
你能用html的内容替换img标签:{% avatar_itself_url actor.avatar_set.all.0 200 %}
吗?您应该看到图像的路径,而不是看图像。眼球比256个字符长的眼球应该不是问题。