2010-10-21 119 views
0

我对Python和Django非常陌生,所以也许有人可以指出我正确的方向。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 %} 

什么是调试的最佳方式?

UPDATE

126  def avatar_url(self, size): 
127   return self.avatar.storage.url(self.avatar_name(size)) 

我想我找到了一点问题,用户配置文件之一也给予同样的错误。所以我认为这对他来说太长了一定是他的化身/形象。我试图缩小它的范围...

回答

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脚本中运行以下代码:

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个字符的应该不是问题。

+0

好,如你所建议的,我删除了img行,看看页面是否呈现,并确实如此。那究竟是什么意思呢。如何测试看看什么项目太长?有没有办法让我调试? – 2010-10-21 16:18:07

+0

无论如何,255组的限制在哪里? – 2010-10-21 16:45:40

+0

据我所见,没有任何通向头像的路径接近255个字符。 – 2010-10-21 16:50:10