Я пытался понять, что оптимальный способ сделать Ajax в Django. Читая материал здесь и там, я понял, что общий процесс:
-
сформулируйте свой вызов Ajax, используя некоторую библиотеку JavaScript (например, jQuery), настройте шаблон URL в Django, который ловит вызов и передает его функции просмотра
-
в функции просмотра Python получить интересующие вас объекты и отправить их обратно клиенту в формате JSON или аналогично (с использованием встроенного модуля serializer или simplejson)
-
определить функцию обратного вызова в JavaScript, которая получает данные JSON и анализирует их, поэтому для создания любого HTML-кода необходимо отобразить. Наконец, JavaScript script помещает HTML везде, где он должен оставаться.
Теперь, что я до сих пор не понимаю, как шаблоны Django связаны со всем этим? По-видимому, мы вообще не используем возможности шаблонов. В идеале я подумал, что было бы неплохо передать объект JSON и имя шаблона, чтобы данные можно было повторить и создать HTML-блок. Но, может быть, я здесь совершенно не прав...
Единственный ресурс, который я нашел в этом направлении, этот фрагмент (769), но я еще не пробовал его. Очевидно, что в этом случае произойдет то, что весь полученный HTML создается на стороне сервера, а затем передается клиенту. Функция JavaScript-callback должна отображать ее в нужном месте.
Это вызывает проблемы с производительностью? Если нет, даже без использования вышеприведенного фрагмента, почему бы не форматировать HTML непосредственно в бэкэнд с помощью Python вместо front-end?
Большое спасибо!
ОБНОВЛЕНИЕ: используйте фрагмент 942, потому что это расширенная версия выше!. Я обнаружил, что поддержка наследования работает намного лучше таким образом.