Как я могу использовать jquery-подобный селектор в шаблонах django (html), чтобы получить часть этого шаблона? - PullRequest
0 голосов
/ 18 марта 2012

Я хочу получить часть моих шаблонов django с помощью jquery-подобной выборки.

Пример:

{% extends "base.html" %}

{% block content %}
<h1>{{ title }}</h1>
<h2>Category: {{ name }}</h2>

<p class="desc">{{ phase.name }}. Since : {{ due_date|date:"d/m/Y H:i:s" }}</p>

<div id="list">
    <ul>
        {% for o news.all %}
        <li>
            <a href="{{ o.url }}">{{ o.title }}</a> - Value: {{ o.value }}
        </li>
        {% endfor %}
    </ul>
</div>

{% endblock %}

Если я сделаю

piece = pyq("#list ul")

штука будет

<ul>
    {% for o news.all %}
    <li>
        <a href="{{ o.url }}">{{ o.title }}</a> - Value: {{ o.value }}
    </li>
    {% endfor %}
</ul>

Существуют ли пакеты / приложения, которые позволяют мне это делать?

Если нет, то какое самое быстрое решение для этого? Это возможно или это слишком сложно?

Я хочу получить это, потому что в ajax я не хочу создавать много фрагментов (с включениями).

PS: Я довольно привык к шаблонам jQuery и Django (теги и фильтры, такие как include) Конечно, с django я не могу этого сделать, поэтому я прошу пакет / приложения, если таковые существуют. Может быть, вопрос не ясен, мой английский плохой: (* ​​1020 *

Ответы [ 2 ]

1 голос
/ 18 марта 2012

Вы можете использовать только jQuery для выбора части HTML веб-страницы. Его нельзя использовать для выбора части шаблона Django, потому что шаблон Django используется для генерации самого HTML. Это означает, что к моменту запуска jQuery синтаксис Django уже «исчез». В вашем случае селектор jQuery может выбрать ul, как он есть в HTML, но он не будет содержать никакого специального кода Django или синтаксиса шаблона.

1 голос
/ 18 марта 2012

Если вы хотите получить доступ к шаблону до его рендеринга, вы можете создать шаблон с нужным вам кодом.

#your_news_list_template.html
<ul>
  {% for o news.all %}
<li>
  <a href="{{ o.url }}">{{ o.title }}</a> - Value: {{ o.value }}
</li>
  {% endfor %}
</ul>

затем вы можете включить это в любой другой шаблон или просто отобразить его в строку.

{% include "path/to/your_news_list_template.html" %}

если вы сделаете это, убедитесь, что вы включили news в свой контекст

https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#include документирует это.Это позволит вам повторно использовать этот блок в любом шаблоне.

Если вам нужен html ПОСЛЕ того, как django отображает его, вы можете использовать одну из библиотек, перечисленных ниже:

Вы можете анализировать HTML с помощью селекторов jquery сбиблиотека Spynner.Это может иметь больше накладных расходов, чем вы имели в виду.http://pypi.python.org/pypi/spynner

Я только что узнал о pyquery, который позволяет вам использовать jquery-подобный синтаксис для выбора элементов.http://packages.python.org/pyquery/

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