Как запустить код Python на HTML-странице с помощью Django - PullRequest
0 голосов
/ 03 мая 2019

Я изучаю веб-разработку с использованием фреймворка Django. У меня есть небольшие проблемы с запуском кода Python на HTML-странице. Мне нужно перебрать список строк, который в основном содержит пути изображений, которые я хочу показать в карусели. Я получаю эту ошибку "Недопустимый тег блока в строке 83: 'with.i', ожидаемый 'endblock'. Вы забыли зарегистрировать или загрузить этот тег?" в файле galleryPage.html при попытке откройте эту страницу. Это несколько строк кода, которые я написал до сих пор

/ views.py /

def galleryPage(request):
    from os import listdir
    from os.path import isfile, join

    ImageList = []
    imagePath = "static/images/gallery/"

    for f in listdir(imagePath):
        temp = join(imagePath, f)
        if isfile(temp):
            temp = "../" + temp
            ImageList.append(temp)

    return render(request, "galleryPage.html", {"imageList": ImageList})

/ galleryPage.html /

{% extends 'base.html' %}

{% block title %} GALLERY {% endblock %}

{% block slideshow %}

* {box-sizing: border-box;}
body {font-family: Verdana, sans-serif;}
.mySlides {display: none;}
img {vertical-align: middle;}

/* Slideshow container */
.slideshow-container {
  max-width: 1000px;
  position: relative;
  margin: auto;
}

/* Caption text */
.text {
  color: #f2f2f2;
  font-size: 15px;
  padding: 8px 12px;
  position: absolute;
  bottom: 8px;
  width: 100%;
  text-align: center;
}

/* Number text (1/3 etc) */
.numbertext {
  color: #f2f2f2;
  font-size: 12px;
  padding: 8px 12px;
  position: absolute;
  top: 0;
}

/* The dots/bullets/indicators */
.dot {
  height: 15px;
  width: 15px;
  margin: 0 2px;
  background-color: #bbb;
  border-radius: 50%;
  display: inline-block;
  transition: background-color 0.6s ease;
}

.active {
  background-color: #717171;
}

/* Fading animation */
.fade {
  -webkit-animation-name: fade;
  -webkit-animation-duration: 1.5s;
  animation-name: fade;
  animation-duration: 1.5s;
}

@-webkit-keyframes fade {
  from {opacity: .4} 
  to {opacity: 1}
}

@keyframes fade {
  from {opacity: .4} 
  to {opacity: 1}
}

/* On smaller screens, decrease text size */
@media only screen and (max-width: 300px) {
  .text {font-size: 11px}
}

{% endblock %}

{% block content %}

<div class="slideshow-container">

{% with.i = 0 %}
<indent>
{{ for image in imageList.0: }}
    {%  ++i %}
    <div class="mySlides fade">
    <div class="numbertext"> {% i %} / {{ imageList.size() }} </div>
    <img src="{{ image }}" style="width:100%">
    <div class="text">Caption Text</div>
    </div>
</indent>
{% endwith %}
</div>
<br>

<div style="text-align:center">
  <span class="dot"></span> 
  <span class="dot"></span> 
  <span class="dot"></span> 
</div>

<script>
var slideIndex = 0;
showSlides();

function showSlides() {
  var i;
  var slides = document.getElementsByClassName("mySlides");
  var dots = document.getElementsByClassName("dot");
  for (i = 0; i < slides.length; i++) {
    slides[i].style.display = "none";  
  }
  slideIndex++;
  if (slideIndex > slides.length) {slideIndex = 1}    
  for (i = 0; i < dots.length; i++) {
    dots[i].className = dots[i].className.replace(" active", "");
  }
  slides[slideIndex-1].style.display = "block";  
  dots[slideIndex-1].className += " active";
  setTimeout(showSlides, 2000); // Change image every 2 seconds
}
</script>

{% endblock %}

1 Ответ

2 голосов
/ 03 мая 2019
{% with.i = 0 %}

должно быть

{% with i=0 %}

Почему у вас есть imageList.0 вместо imageList?

Кроме того, я думаю, что вы можете рассмотреть возможность объединения ваших текущих циклов "с" и "для" в один "для", как в документах, которые я разместил выше:

{% for key, image in imageList %}
   <div class="mySlides fade">
   <div class="numbertext"> {% key %} / {{ imageList.size() }} </div>
   <img src="{{ image }}" style="width:100%">
   <div class="text">Caption Text</div>
   </div>
{% endfor %}

Таким образомвам не нужно увеличивать i самостоятельно, и вы убираете некоторую сложность (и некоторые источники ошибок).

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