#python #html #css #flask #jinja2
#python #HTML #css #flask #jinja2
Вопрос:
Я создаю очень простое веб-приложение (используя python flask), которое будет отображать некоторые изображения пользователю. Как правильно отображать изображения под вложенными заголовками?
словарь, возвращенный из приложения flask
images:{'fish': ['/images/fish/Jellyfish.jpg'],
'mammal': ['/images/mammal/Koala.jpg']}
}
show.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Image Gallery</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<body>
<div class="container">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Images</h1>
</div>
<hr>
{% if images %}
{% for key,value in image.items() %}
<h4>{{key}}<h4>
<hr>
{% for image_name in value %}
<div class="col-lg-3 col-md-4 col-xs-6 thumb">
<img class="img-responsive" src=" {{url_for('send_image', filename=image_name)}}">
<hr> </div>
{% endfor %}{% endfor %}{% endif %}
</div>
</div>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
</body>
</html>
Ответ №1:
Я смог это исправить, переместив <div class="row">
внутрь {% for key,value in image.items() %}
цикла for
Обновленный html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Image Gallery</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<body>
<div class="container">
<div class="col-lg-12">
<h1 class="page-header">Images</h1>
</div>
<hr>
{% if images %}
{% for key,value in image.items() %}
<div class="row">
<h4>
{{key}}
<h4>
<hr>
{% for image_name in value %}
<div class="col-lg-3 col-md-4 col-xs-6 thumb">
<img class="img-responsive" src=" {{url_for('send_image', filename=image_name)}}">
<hr>
</div>
{% endfor %}
</div>
{% endfor %}{% endif %}
</div>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
</body>
</html>
Ответ №2:
Вы можете попробовать это: в html:
<div class="container">
<div class="row">
<div class="col-sm header">Fish</div>
</div>
<div class="row">
<div class="col-sm image">
//Image of fish
</div>
</div>
<div class="row">
<div class="col-sm header">Flower</div>
</div>
<div class="row">
<div class="col-sm image">
//Image of first flower
</div>
<div class="col-sm image">
//Image of secondflower
</div>
<div class="col-sm image">
//Image of thirdflower
</div>
</div>
</div>
в css:
.header {
border-bottom: 1px solid #e4e6e8;
border-top: 1px solid #e4e6e8;
}
.image {
border-bottom: 1px solid #e4e6e8;
}
.col-sm {
padding: 10px;
}
Ответ №3:
Вот как бы я это сделал:
<div class="container">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Images</h1>
</div>
<hr>
{% if images %}
{% for key,value in image.items() %}
<h4>{{key}}<h4>
<hr>
{% for image_name in value %}
// have a condition here to check if its first image, then
display it with a <div> tag.
if(first) {
<div class="col-lg-3 col-md-4 col-xs-6 thumb">
<img class="img-responsive" src=" {{url_for('send_image',
filename=image_name)}}">
}
//end here
<div class="col-lg-3 col-md-4 col-xs-6 thumb">
<img class="img-responsive" src=" {{url_for('send_image',
filename=image_name)}}">
<hr> </div>
{% endfor %}{% endfor %}{% endif %}
</div>
</div>
Комментарии:
1. Я устал, но вывод не такой, как я ожидал
{% if loop.index0 == 0 %} <div class="col-lg-3 col-md-4 col-xs-6 thumb"> <img class="img-responsive" src=" {{url_for('send_image', filename=image_name)}}"> {% endif %}
Изображения были искажены