django - недопустимый тег блока: «add_pinned_status», ожидаемый «else» или «endif» - PullRequest
1 голос
/ 03 января 2012

Я получаю следующую ошибку при обслуживании приложения django с использованием Nginx + FastCGI

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

Как ни странно, сайт работает нормально, когда я работаю с использованием сервера разработки 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.Работает без проблем с сервером dev.

Ответы [ 2 ]

3 голосов
/ 03 января 2012

Django выдает эту ошибку, когда у вас есть незакрытый тег шаблона.В этом случае {% if ... %} templatetag.

Что касается того, почему это происходит только в определенных сценариях, он может быть внутри самого условного тега, поэтому он не всегда обрабатывается, но я думаю, что Django обрабатывает весь шаблон, несмотря на то, чтопроисходит условно или нет.Также возможно, что произошла ошибка при обновлении вашего рабочего сайта, и он использует другую / более старую версию, чем ваш сайт разработки.

В любом случае, ошибка - это ошибка.Найдите незамкнутый тег шаблона, и вы решите его по всем направлениям.

ОБНОВЛЕНИЕ : Альтернатива заключается в том, что тег шаблона add_pinned_sites не определен.Предполагая, что он действительно загружен в {% load tags %}, убедитесь, что библиотека templatetag доступна во всех работающих средах, то есть буквально существует на сервере.Если это действительно так, убедитесь, что вы полностью перезагрузили среду Nginx + FastCGI или просто перезагрузите сервер, чтобы быть полностью уверенным.

2 голосов
/ 03 января 2012

Является ли "tags" фактическим именем библиотеки тегов, которая содержит add_pinned_sites? Возможно, стоит изменить его на более понятное имя - просто интересно, возможно ли, что вы видите конфликты импорта между этой и другой библиотекой тегов (например, встроенными тегами Django).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...