Переменная django в Google API (таблица) API - PullRequest
0 голосов
/ 14 февраля 2012

Я довольно новичок в API Google Chart и пытаюсь интегрировать его в свой текущий проект django.По сути, у меня есть шаблон django, который выглядит следующим образом:

<div class="container_24">
<div class="grid_24">
    {% if query %}
        <p>Results</p>

        {% for result in page.object_list %}
            <p>
                <a href="{{ result.object.get_absolute_url }}">{{ result.object.name }} {{ result.object.salary }} {{ result.object.entry }} {{ result.object.category}}</a>
            </p>
        {% empty %}
            <p>No results found.</p>
        {% endfor %}

        {% if page.has_previous or page.has_next %}
            <div>
                {% if page.has_previous %}<a href="?q={{ query }}&amp;page={{ page.previous_page_number }}">{% endif %}&laquo; Previous{% if page.has_previous %}</a>{% endif %}
                |
                {% if page.has_next %}<a href="?q={{ query }}&amp;page={{ page.next_page_number }}">{% endif %}Next &raquo;{% if page.has_next %}</a>{% endif %}
            </div>
        {% endif %}
    {% else %}
        {# Show some example queries to run, maybe query syntax, something else? #}
    {% endif %}
</div>
<div class="fclear"></div>
</div>
<div class="clear"></div>
</div>
</div>

Все хорошо, и я могу видеть свои результаты, как и ожидалось.Теперь я вставляю API Google Chart следующим образом:

<div class="container_24">
<div class="grid_24">
{% if query %}
    <p>Results</p>

    {% for result in page.object_list %}
<script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type='text/javascript'>
  google.load('visualization', '1', {packages:['table']});
  google.setOnLoadCallback(drawTable);
  function drawTable() {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Name');
    data.addColumn('number', 'Salary');
    data.addColumn('boolean', 'Full Time Employee');
    data.addRows(4);
    data.setCell(0, 0, '{{ result.object.name }}');
    data.setCell(0, 1, 10000, '$10,000');
    data.setCell(0, 2, true);
    data.setCell(1, 0, '{{ result.object.name }}');
    data.setCell(1, 1, 8000, '$8,000');
    data.setCell(1, 2, false);
    data.setCell(2, 0, '{{ result.object.name }}');
    data.setCell(2, 1, 12500, '$12,500');
    data.setCell(2, 2, true);
    data.setCell(3, 0, '{{ result.object.name }}');
    data.setCell(3, 1, 7000, '$7,000');
    data.setCell(3, 2, true);

    var table = new google.visualization.Table(document.getElementById('table_div'));
    table.draw(data, {showRowNumber: true});
  }
</script>
..
..
..

Однако, когда я делаю вышеупомянутое, я вижу то же имя для переменной result.object.name.То есть он не проходит через этот массив.Есть ли способ сделать что-то вроде:

data.setCell(0:20,0)='{{result.object.name}}'

, где 0:20 будет представлять строки таблицы / матрицы?

Спасибо за ваше время.

1 Ответ

1 голос
/ 14 февраля 2012

Если я правильно понимаю вашу проблему, один из вариантов будет зацикливаться так:

{% for n in result.object.name %}

    data.setCell({{ forloop.counter0 }}, 0, '{{ n }}');

{% endfor %}

Я бы настоятельно не рекомендовал вам делать это, поскольку он подвержен JS-инъекциям, и вам пришлось бы избегать как Javascript, так и вашего шаблона. Я бы посоветовал использовать оболочку Google Chart: http://code.google.com/p/google-chartwrapper/

https://github.com/jacobian/django-googlecharts/

http://code.google.com/p/django-graphs/

Насколько я помню, django-googlecharts работает очень хорошо, и вы сможете использовать теги прямо в шаблоне.

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