Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Django for循环自动填充HTML属性_Html_Django_Wagtail - Fatal编程技术网

使用Django for循环自动填充HTML属性

使用Django for循环自动填充HTML属性,html,django,wagtail,Html,Django,Wagtail,我正在使用Django和Wagtail CMS创建一个网站,并且有一种通过html模板中名为“数据组”的自定义属性过滤帖子的方法。当我硬编码所有内容时,它是有效的,但我想使用一些逻辑来为每个帖子动态填充该属性。基本上,我希望在那里填充post标记,但我在这样做时遇到了问题 我将使用 -------------------------- 硬编码过滤器按钮示例: <ul class="portfolio-filters">

我正在使用Django和Wagtail CMS创建一个网站,并且有一种通过html模板中名为“数据组”的自定义属性过滤帖子的方法。当我硬编码所有内容时,它是有效的,但我想使用一些逻辑来为每个帖子动态填充该属性。基本上,我希望在那里填充post标记,但我在这样做时遇到了问题

我将使用

--------------------------
硬编码过滤器按钮示例:

 <ul class="portfolio-filters">
                            <li class="active">
                                <a class="filter btn btn-sm btn-link" data-group="category_all">All</a>
                            </li>
                            <li>
                                <a class="filter btn btn-sm btn-link" data group="category_detailed">Detailed</a>
                            </li>
                            <li>
                                <a class="filter btn btn-sm btn-link" data-group="category_direct-url">Direct URL</a>
                            </li>
                            <li>
                                <a class="filter btn btn-sm btn-link" data-group="category_image">Image</a>
                            </li>
                            <li>
                                <a class="filter btn btn-sm btn-link" data-group="category_soundcloud">SoundCloud</a>
                            </li>
                            <li>
                                <a class="filter btn btn-sm btn-link" data-group="category_video">Video</a>
                            </li>
                            <li>
                                <a class="filter btn btn-sm btn-link" data-group="category_vimeo-video">Vimeo Video</a>
                            </li>
                            <li>
                                <a class="filter btn btn-sm btn-link" data-group="category_youtube-video">YouTube Video</a>
                            </li>
                        </ul>
  • 2019年12月4日
更多与上述按钮匹配的示例:

<figure class="item lbvideo" data-groups='["category_all", "category_video", "category_youtube-video"]'>
<figure class="item lbimage" data-groups='["category_all", "category_image"]'>
<figure class="item lbaudio" data-groups='["category_all", "category_soundcloud"]'>
<figure class="item lbvideo" data-groups='["category_all", "category_video", "category_vimeo-video"]'>

等等

当所有内容都按上述方式进行硬编码时,上述方法有效

然而,我想通过一个for循环创建一个模板,该循环将填充每个添加的post/portfolio项,因此我尝试了一些填充过滤器的逻辑,但我似乎无法获取标记并将它们插入图中的data groups属性

下面是填充按钮的方法(尽管我还没有找到一种在这里只显示唯一项目的方法):

{%for post in all_posts%}
{post.tags.all%中标记的%s}
  • {{发布日期}
    {post.tags.all%中标记的%s} {{tag}}, {%endfor%} {%endfor%}
  • 有人知道一种方法可以自动用模型中的项目填充该属性,从而避免用HTML硬编码吗

    此代码可以很好地填充文本,例如下面显示的fine:

    {% for tag in post.tags.all %}
          <div class="post-date">{{tag}},</div>
    {% endfor %}
    
    {%for post.tags.all%中的标记]
    {{tag}},
    {%endfor%}
    
    谢谢

    编辑:添加行为照片

    当我单击“全部”时,所有帖子如下所示(我突出显示了通过右上角的标记填充的过滤器,每个帖子下都是以编程方式为该帖子添加的标记):

    单击任何其他过滤器时,它们都会消失: 单击任何其他过滤器,它们都会消失,尽管它们下面打印了标签

    编辑2:添加实际页面的检查。 这是检查时填充图形的html,据我所知,填充和格式化的项目正确:

    这些是过滤器按钮,其数据组在检查时自动生成:

    这是过滤页面的javascript:

    看起来您只是缺少
    {{}
    标记周围的括号,所以它只是输出文本
    标记
    ,而不是
    标记
    变量。您还需要确保逗号和引号位于正确的位置

    data-group='["all"{% for tag in post.tags.all %}, "{{ tag }}"{% endfor %} ]'
    
    或者,如果您需要工作示例中的
    类别
    前缀:

    data-group='["category_all"{% for tag in post.tags.all %}, "category_{{ tag }}"{% endfor %} ]'
    

    有趣的是,将gasman的格式建议与post的数据组复数结合起来解决了这个问题

    发件人:

    
    
    致:

    
    

    对于任何有类似问题的人,请注意逗号的位置非常重要。当通过硬编码解决问题时,如果我在列表的开头或结尾有一个不合适的逗号,代码将不起作用。

    与其说你的模板代码“似乎不起作用”,不如告诉我们它生成的HTML,以及这与预期输出的差异。添加了一些照片来说明我遇到的问题。与其尝试从图像中诊断问题,不如尝试在浏览器的开发人员工具中查看生成的HTML源代码,看看它与正在工作的硬编码版本的HTML有何不同。这几乎肯定会告诉你你自己解决问题所需要的一切——如果没有,请同时向我们展示这两个版本,我们可以告诉你需要在Django模板代码中修复什么才能产生所需的结果。嗨,gasman,谢谢你的提示,尽管我在其他地方都这么做了,但我已经完全忘记了这一点,即使添加了它,问题仍然存在。基本上,当我点击任何一个过滤器时,如果我点击“全部”,它们都会出现(因为所有过滤器都是硬编码的),但其他过滤器似乎都不起作用——所有项目都会消失,尽管它们的过滤器在数据组中。
    {% for tag in post.tags.all %}
          <div class="post-date">{{tag}},</div>
    {% endfor %}
    
    data-group='["all"{% for tag in post.tags.all %}, "{{ tag }}"{% endfor %} ]'
    
    data-group='["category_all"{% for tag in post.tags.all %}, "category_{{ tag }}"{% endfor %} ]'
    
    <figure class="item standard" data-group='["all"{% for tag in post.tags.all %},"{{tag}}"{% endfor %}]'>
    
    <figure class="item standard" data-groups='["all"{% for tag in post.tags.all %},"{{tag}}"{% endfor %}]'>