2012-01-03 49 views
1

服务使用的Nginx + FastCGI的Django的 - 无效的块标签: 'add_pinned_status',预计 '其他' 或 'ENDIF'

Invalid block tag: 'add_pinned_status', expected 'else' or 'endif'

奇怪的是,该网站的工作只是我的Django应用程序时,我得到了以下错误很好,当我使用Django开发服务器时。它也适用于Nginx大部分时间,但错误随机出现,刷新刷新。任何想法可能是什么问题?

编辑:这里的代码,只是为了澄清,没有挂如果声明。

{% extends 'master.html'%} 
{% load thumbnail %} 
{% load tags %} 

{% block 'title' %} 
    {{ title }} 
{% endblock %} 

{% block 'content' %} 
<div id="feed" class="content"> 
    {% for book in books.object_list %} 
    <div class="book_preview"> 
     <div class="thumbnail"> 
      <a href="/book/{{ book.id }}/{{ book.get_slug }}/"> 
      {% if book.cover_image %} 
      {% thumbnail book.cover_image "120" as im %} 
      <img src="{{ im.url }}" alt="Python for Software Design"/> 
      {% endthumbnail %} 
      {% else %} 
      <img src="{{ STATIC_URL }}default_thumb.jpg" alt="Python for Software Design"/> 
      {% endif %} 
      </a> 
     </div> 
     <div class="book_details"> 
      <h2 class="book_title"> 
       <a class="book_profile_link" href="/book/{{ book.id }}/{{ book.get_slug }}/">{{ book.title }}</a> 
       {% if user != book.uploader %} 
       <a class="shelf_adder {% add_pinned_status request book.pk %}" href="/shelf/{{ book.id }}/toggle/?next={{ request.get_full_path }}" title="Toggle shelf status"></a> 
       {% endif %} 
      </h2> 
      <h3 class="book_subtitle"> 
      {% if book.subtitle %} 
       {{ book.subtitle }} 
      {% else %} 
       <a href='/book/{{book.id}}/edit/#subtitle'>Provide subtitle</a> 
      {% endif %} 
      </h3> 
      <h3 class="book_authors"> by {{ book.author.filter|join:", " }}</h3> 
      <div class="book_description"> 
      {% if book.description %} 
      <p> 
       {{ book.description|truncatewords:25 }} 
      </p> 
      {% else %} 
      <p class="message">No description available. Create one.</p> 
      {% endif %} 
     </div> 

     <div class="book_links"> 
      <a href="/book/{{ book.id }}/{{ book.get_slug }}/" class="book_profile_link" title="Book profile"> 
       Book profile 
      </a> 
      <a href="http://{{ book.homepage }}" class="book_website_link" title="Book website" target="_blank"> 
       Book website 
      </a> 
     </div> 
     <p>Points: {{ book.shelf_additions }}</p> 
     <div class="book_tags"> 
      {% if book.topics.all %} 
       {% for topic in book.topics.filter %} 
        <a href="/topic/{{ topic }}/" title="Browse this topic">{{ topic }}</a> 
       {% endfor %} 
      {% else %} 
       <a href="/book/{{ book.id }}/edit/#topics" title='Click to add'>no topics added&#9785;</a> 
      {% endif %} 
      </div> 
     </div> 
     <div style="clear: both;"></div> 
    </div> 
    {% endfor %} 
    <div class="pagination"> 
     {% if books.has_previous %} 
      <a href="?page={{ books.previous_page_number }}">previous</a> 
     {% endif %} 
      <span class="current"> 
       Page {{ books.number }} of {{ books.paginator.num_pages }} 
      </span> 
     {% if books.has_next %} 
      <a href="?page={{ books.next_page_number }}">next</a> 
     {% endif %} 
    </div> 
</div> 
{% endblock %} 

的问题开始于if user != book.uploader语句后的线,你可以看到被终止与适当endif。我怀疑这可能是某种超时,但我不完全确定。请记住,它有时会起作用,但在使用Nginx时会随机停止。它完美地与开发服务器一起工作。

回答

3

当你有一个未封闭的模板标签时,Django会给出这个错误。在这种情况下,一个{% if ... %}模板标签。

至于为什么它只发生在某些情况下,它可能在一个条件标签本身,所以它并不总是处理,但我认为Django处理整个模板,尽管有条件或不条件。在更新您的生产站点时可能会出现一些错误,并且它使用的是与您的开发站点不同/更旧的版本。

无论如何,错误是错误。找到未封闭的模板标签,然后您将全面解决。

UPDATE:替代方案是add_pinned_sites templatetag未定义。假设它实际上已加载到{% load tags %}中,请确保该模板标签库在所有运行环境中均可用,即它确实存在于服务器上。如果确实存在,请确保您完全重新加载Nginx + FastCGI环境,或者重新启动服务器以确保完全安全。

+0

我刚刚更新了代码的问题。 if语句被终止,但如果您能看到任何其他问题,请让我知道。谢谢。 – 2012-01-03 16:44:54

+0

嗨克里斯。这是一个自定义标签,用于将“固定”到某些元素的类中,因此我确定它已被定义并加载 - 当它工作时会出现所需的效果。我重新加载Nginx了好几次。这很烦人,因为我已经想好并反复检查你的所有建议。它一直在工作了几个小时,所以我正在尝试重新创建它。谢谢你的时间。我很感激。 – 2012-01-03 22:22:42

2

“标签”是保存的标签库的实际名称add_pinned_sites?可能值得将它更改为更清晰的名称 - 只是想知道是否有可能看到与另一个标记库(如Django的内置标记)之间的导入冲突。

+0

我试过了你的建议,但最近几个小时一直工作还好,所以我不知道它是否有任何影响。我试图理解的是随机性 - 命名冲突不会阻止每次请求期间的导入发生?另外,使用开发服务器时,我从来没有遇到过问题,只能用nginx。也许我应该用不同的措词来突出这个问题。这非常令人沮丧。谢谢。 – 2012-01-03 17:54:39

+0

对不起,对此的回答将需要比我更聪明的人。我完全得到它的随机性的挫败感。当用计算机看到“随机”行为时要记住的事情是它几乎总是你搞砸了。电脑不会随机。 – Tom 2012-01-03 18:30:33

+0

哈哈。很公平。我依稀记得,读过一些关于可怜的程序员的地方,认为把错误归咎于恶意,所以我会尽量记住这一点。不管怎么说,还是要谢谢你。 – 2012-01-03 22:09:21

相关问题