【发布时间】:2021-06-15 15:12:09
【问题描述】:
我正在尝试使用静态滑块 (javascript sn-p) 获取动态数据。从 ListView 我正在获取图像。我敢肯定,模板和 javascript 中的循环是错误构建的。有什么建议吗?
models.py
class Gallery(models.Model):
name = models.CharField(max_length=250)
new_image = models.ImageField(upload_to='gallery_folder')
day_publish = models.DateField()
def save(self, *args, **kwargs):
super().save(self, *args, **kwargs)
img = Image.open(self.new_image.path)
if img.height > 940 or img.width > 788:
output_size = (820,720)
img.thumbnail(output_size)
img.save(self.new_image.path)
def get_absolute_url(self):
return reverse('detail-slug', kwargs={'pk': self.pk})
def __str__(self):
return self.name
views.py
def slide_show_view(request, *args, **kwargs):
all_images = Gallery.objects.all()
choosen_image = Gallery.objects.get(**kwargs)
context = {
'all_images': all_images,
'choosen_image': choosen_image
}
return render(request, "gallery/gallery_slide.html", context)
urls.py
urlpatterns = [
path('slug/<int:pk>/', views.slide_show_view, name="detail-slug"),
]
我尝试使用跨度的 if 语句(我不知道是否正确)仍然无法正常工作。 画廊幻灯片.html
<div class="container">
<div class="carouselContainer">
<div class="carouselMainImage">
<img src="{{ choosen_image.new_image.url }}">
</div>
{% for image in all_images %}
<div class="carouselImgs">
<img src="{{ image.new_image.url }}">
</div>
{% endfor %}
<span class="prev" id="prev">
< </span>
<span class="next" id="next">
> </span>
</div>
</div>
<script src="{% static 'js/slideshow.js' %}"></script>
slideshow.js
var currentSlide = document.getElementsByClassName('carouselMainImage');
function showSlide(slideIndex) {
const slides = document.getElementsByClassName('carouselImgs');
console.log(slides);
if (slideIndex > slides.length) { currentSlide = 1 }
if (slideIndex < 1) { currentSlide = slides.length }
for (var i = 0; i < slides.length; i++) {
slides[i].style.display = 'none'
}
slides[currentSlide - 1].style.display = 'flex'
}
function nextSlide() {
showSlide(currentSlide += 1);
}
function previousSlide() {
showSlide(currentSlide -= 1);
}
window.onload = function () {
showSlide(currentSlide);
document.getElementById('prev').addEventListener('click', function () {
previousSlide();
})
document.getElementById('next').addEventListener('click', function () {
nextSlide();
})
}
【问题讨论】:
标签: javascript python-3.x django