django + ajax: нужно небольшое введение для "чайников" - PullRequest
0 голосов
/ 05 марта 2010

Я пытался понять, как ajax работает с django несколько раз, но похоже, что никакие учебники в Интернете не могут мне помочь. Я лучше попробую создать небольшой образец. Таким образом, пытаясь решить следующее.

1) У меня есть очень простая функция просмотра, которая возвращает случайное число при вызове, например,

def homepage(request):
    id = randint(1, 6)
    return render_to_response("home.html", 
                              {"id" : id},
                              context_instance = RequestContext(request))

2) У меня очень примитивный шаблон, поэтому он содержит номер и кнопку, которая запускает код JS при нажатии, например,

{% extends "index.html" %}

{% block head %}

<script type="text/javascript">
  <!--
      function clickNewButton()
      {
      window.open("/");
      }
      -->
</script>

{% endblock %}

{% block content %}
  <div id="meta">
    <form name="smallForm">
      <p>
         {{ id }}
      </p>
        <input type="button" value="New" onClick="clickNewButton()"/>
    </form>
  </div>

</div>

{% endblock %}

Так что в основном вопрос заключается в следующем ... Как перезагрузить только ту часть страницы, которая содержит текст с номером

{{id}}

в моем случае.

Какая будет разница, если мне понадобится перезагрузить какой-нибудь другой элемент с помощью щелчка (например, изображения)?


Извините, если вопрос просто глупый. Не уверен, с чего начать ...: (


также, как мне, например, изменить невидимую часть страницы? например один из flashvars экземпляра swfobject, если я динамически перезагружаю flash-приложение, чтобы получить новые параметры?

Ответы [ 3 ]

2 голосов
/ 05 марта 2010

Вы можете создать представление, которое возвращает только идентификатор

def id(request):
    return HttpResonse(randint(1, 6))

И загрузите его AJAX. Например, с помощью jQuery:

$('#clickme').click(function(){ $('#randomnumber').load('/api/random.txt'); });

Но если вам нужно что-то большее, создайте полный API с помощью Piston (http://bitbucket.org/jespern/django-piston/) и используйте его. А лучше сначала изучи jQuery;)

1 голос
/ 06 марта 2010

Я повторю свой стандартный ответ на этот вопрос: используйте jQuery Taconite Plugin . Он прост в настройке, работает в кросс-браузерном режиме и дает вам потрясающий контроль над всей страницей. Это простое решение, все, что вы делаете, это отправляете запрос. Все AJAXiness обрабатывается для вас, и все изменения применяются автоматически. Все, что вы можете сделать с помощью jQuery, может быть запущено с помощью этого плагина, вплоть до того, что вы вызовете eval() фрагмента Javascript (который затем может, конечно, делать все, что вам нравится ).

Поскольку я давал этот ответ 6 или 7 раз, я наконец сломался и создал загружаемый файл с моим классом Taconite и простым примером использования . Дайте мне знать, если у вас есть вопросы и / или проблемы с ним.

0 голосов
/ 17 апреля 2013

Вот пример, который идеально подходит для вашего вопроса, используя расширение Dajax django:

http://www.dajaxproject.com/random/

Dajax - мощный инструмент для быстрой и быстрой разработки логика асинхронного представления в веб-приложениях с использованием Python и почти нет исходного кода JavaScript. С Dajax вы можете изменять свою структуру DOM напрямую из Python.

Это действительно простая вещь.

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