【问题标题】:How do I assign an ID to a div using Django?如何使用 Django 为 div 分配 ID?
【发布时间】:2020-11-17 10:22:10
【问题描述】:

我正在使用基于 Python 的 django 框架的夹层,我正在尝试为我的博客文章添加一个方法。在 models.py 中,我添加了一个增量计数器用作 id 参考。

`

def get_new_id():
        n = 100
        i = 1
        for i in range(n):
            if i ==100:
                break
            print (i) ##just checking if it actually did what I asked
            return i

这样我希望能够在我的主页上显示最新的帖子,而无需手动更改它。 我可能仍然需要反转计数,以便最后一篇博文成为第 1,但无论如何,问题不在于。

我知道代码可能已经太少了,但即使是这个简单的循环也不会在控制台中打印 i ,更不用说将自己放入元标记中了。我已经在正确的 html 页面中添加了对该方法的引用(或者我相信)

来自 blog_post_list.html

    {% for blog_post in blog_posts.object_list %}

 <div id="{{ blog_post.get_new_id }}" class="post-preview">
          <a href="{{ blog_post.get_absolute_url }}">
            <h2 class="post-title">
              {{ blog_post.title }}
            </h2>
              </a>
                {% if settings.BLOG_USE_FEATURED_IMAGE and blog_post.featured_image %}
                {% block blog_post_list_post_featured_image %}
                <a href="{{ blog_post.get_absolute_url }}">
                <img class="img-thumbnail" src="{{ MEDIA_URL }}{% thumbnail blog_post.featured_image 730 474 %}">

我想知道这是否只是写得不好的方法,还是我完全做错了其他事情。如果我可以为每篇博文分配一个 ID,我可以在我网站上的任何地方使用它,这将是非常棒的。我还是个新手,所以我很感激你能得到的任何帮助。目前,当我运行此代码时,ID 没有在 html 中实现,而是整个方法都被忽略了。 div 的 id 元标记保持为空。但是,从同一页面 (blog_post_list.html) 调用其他方法并以相同的方式正常工作,因此链接就在那里。

提前致谢

【问题讨论】:

  • 为什么不使用blog_post.idblog_post.pk 而不是调用自定义方法
  • 说实话,我不知道那里有。我刚刚注意到 models.py 文件包含类 blogpost 和我的 blogpost 的大部分查询。我找到了它,它确实按预期工作。我认为它是从父类和 .py 文件继承的方法吗?谢谢!
  • 我找到了来源。再次感谢!

标签: python django loops mezzanine


【解决方案1】:

如果您想为 for 循环中呈现的每个项目提供一个 id,并且您希望您的 id 增加,您可以简单地添加一个Django for loop counter。在这种情况下,这将为每个项目提供一个唯一的 ID。

{% for blog_post in blog_posts.object_list %}
<div id="{{ forloop.counter }}" class="post-preview">
  <a href="{{ blog_post.get_absolute_url }}">
     <h2 class="post-title">
        {{ blog_post.title }}
     </h2>
  </a>
{% if settings.BLOG_USE_FEATURED_IMAGE and blog_post.featured_image %}
   {% block blog_post_list_post_featured_image %}
      <a href="{{ blog_post.get_absolute_url }}">
      <img class="img-thumbnail" src="{{ MEDIA_URL }}{% thumbnail blog_post.featured_image 730 474 %}">
      ...

另外,仅供参考:如果您的查询集中有 101 个项目,并且您为第一个和第 101 个提供 id=1,则 id 将不是唯一的。在 HTML 中,您应该为元素提供唯一的 id。

【讨论】:

  • 感谢您的回复和链接。似乎是一个有价值的选择。现在,我将使用 Shahid Tariq 向我展示的内置方法,但感谢您将我指向正确的文档。这些框架的文档数量有时可能会让人不知所措。
猜你喜欢
  • 2014-08-19
  • 2020-08-23
  • 2018-12-05
  • 1970-01-01
  • 1970-01-01
  • 2012-07-06
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多