2012-01-03 44 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

相關問題