【问题标题】:display uploaded items to a grid on django(html and css)将上传的项目显示到 django 上的网格(html 和 css)
【发布时间】:2020-10-05 12:47:06
【问题描述】:

我有一个网格,必须在 3 列中显示上传的图像,第一次尝试时我意识到只显示了第一个上传的图像,所以我添加了一个 forloop 计数器,它也可以工作。我应该怎么做才能在网格上显示这个上传的图像。

views.py

  def profile(request, username=None):
  profile, created = Profile.objects.get_or_create(user=request.user)
if username:
    post_owner = get_object_or_404(User, username=username)
    user_posts = Post.objects.filter(user_id=post_owner)

else:
    post_owner = request.user
    user_posts = Post.objects.filter(user=request.user)

args1 = {
    'post_owner': post_owner,
    'user_posts': user_posts,
}
return render(request, 'profile.html', args1)

models.py

    class Post(models.Model):
        images = models.FileField(upload_to='clips', null=True, blank=True)
        user = models.ForeignKey(User, related_name='imageuser', on_delete=models.CASCADE, default='username')

        def __str__(self):
            return str(self.text)

html

    {% for Post in user_posts %}
      <div class="grid-wrapper">
        {% if forloop.counter|divisibleby:3 %}
          <div class="grid-item">
            {% if Post.video %}
              <video width="400" style="border-radius: 2px;">
                <source src='{{ Post.video.url }}' type='video/mp4'>
              </video>
            {% endif %}
          </div>
        {% endif %}
      </div>
    {% endfor %}

css

    .grid-wrapper {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        grid-auto-rows: 250px;
        grid-gap: 1rem;
        grid-auto-flow: row;
    }

    .grid-item {
        background: red;
        display: flex;
        justify-content: center;
        align-items: center;
    }

【问题讨论】:

    标签: html css django django-templates web-frontend


    【解决方案1】:

    你可以试试这个。这会奏效。

    <div class="grid-wrapper">
      {% for Post in user_posts %}
        <div class="grid-item">
          {% if Post.video %}
          <video width="400" style="border-radius: 2px;">
            <source src='{{ Post.video.url }}' type='video/mp4'>
          </video> 
          {% endif %}
        </div>
      {% endfor %}
    </div>
    

    【讨论】:

    • 没关系,但我应该把 forloop 计数器留在那里吗?
    • @JuanMartinZabala 不需要 forloop 计数器。
    • 嘿,它看起来现在正在工作,但由于某种原因它没有连续显示,图像应该从左到右而不是从上到下
    • @JuanMartinZabala 这应该从左到右。我看不出代码有问题。
    • 谢谢!!我发现了问题,我将 if 语句放在了 grid-wrapper
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 2020-12-03
    • 2022-11-11
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多