Найти - Пользователи
Полная версия: Flask. Выполнениие jinja в jquery.
Начало » Web » Flask. Выполнениие jinja в jquery.
1 2 3
sht
Здравствуйте.
Есть код в шаблоне. Это AJAX запрос. Из шаблона посылается запрос на коллекцию картинок и сервер их отдает. Не могу додумать как результат ответа сервера подставить в jinja {% for in result %} result - принятый json.
<script type="text/javascript">
  function setFilter(){
   $.ajax({
  type:"POST",
  url:"{{ url_for('gallery.load_image') }}",
  data:JSON.stringify({"id":id}),
  contentType:'application/json;charset=UTF-8',
  success:function(result){
  console.log(result);
    $("#gallery").html( {% for  i in result %} <img src=i.filename>{% endfor %} );  !!! тут чтото сделать надо.
    });
  );
  };
  $(".filter").click(setFilter);
  setFilter();
</script>
ayb
Зачем post запрос, да еще и json ?

А если по делу то :

for(var i=0; i<data.length; i++){
    $('#gallery').append('<img src="'+i.filename+'" />')
}
4kpt_IV
Шаблон - это то, что создает html документ на сервере. Он никак не связан с ajax запросом. Просто никак и все. После ajax Вы можете изменить существующий html документ (уже отрендеренный jinja) не перезагружая его полностью, а всего лишь выполняя операции с его DOM (Jquery) или явно (react.js или angular.js)…

P.S. jinja != jquery
sht
Спасибо, помогло!
Еще вопрос.
После ajax запроса, вставил кусочек кода html. Стили, они применяются автоматически или нужно както перегружать,чтобы применилось для новых добавленных элементов?
4kpt_IV
я то понимаю. вот с реализацией пока еще сложности)
4kpt_IV
Нет. Если стили уже есть на странице, то перезагружать не надо. Для элементов, которые есть в стилях CSS правила применяются автоматически.
sht
Что-то не совсем удается.
Вычленил код. Файл CSS - там фотогаллерея простенькая.Один файл для обоих примеров.
Неправильно делаю append для div?
Первый .....
  $.ajax({
  type:"POST",
  url:"{{ url_for('gallery.load_image') }}",
  data:JSON.stringify({"id":id}),
  dataType: "json",
  contentType:'application/json;charset=UTF-8',
    success:function(result){
---- эта часть обновляется при ajax запросе, стили не срабатывают
  $('#gallery').append('<div class="item"><ul class="gal">');                           
  for(var i=0; i<result.length; i++) {
	$('#gallery').append('<li><img src="/static/gallery/'+result[i]+'" alt=""></li>');	};
$('#gallery').append("</ul></div><h2> test css</h2>"); -> <h2>- сохраняет стиль при запросах.
}});
Второй...
этот код при загрузке страницы. стили работают.
  <div id="gallery">
  </div>
<div class="item">
<ul  class="gal">
  {% for image in images  %}
  		<li><img src="/static/gallery/{{ image.filename }}" alt=""></li>
		{% endfor %}
</ul>
</div>
FishHook
sht
Не надо так делать, сначала собери всю разметку, которую собираешься добавлять, как простую строку, потом добавляй.
Ты когда первый аппенд сделал, у тебя сразу же получился невалидный HTML.

Представь, что ты в питоне пытаешься сделать так
eval("print")
eval("(")
eval("x)")
FishHook
Вот здесь это что такое? Почему в кавычках? Не выполнится оно в кавычках, потому что это не часть кодда ЖС, а тупо строка.
src="/static/gallery/'+result[i]+'"

вообще, научись уже пользоваться средствами отладки в браузерах, эти поиски где ты не там закрывающий тег поставил бесконечными будут.
ayb
Вообще проще для таких целей взять какой нибудь js шаблонизатор и не париться
ZZZ
От себя напишу, что смешивать шаблоны сервера с шаблонами клиента, это получать кучу лишнего геморроя.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB