django模板条件语句中的错误

时间:2018-11-06 13:19:27

标签: django

这是django的错误,还是我做错了什么?我有两个问题。

  1. 当我仅在没有帖子的情况下放置一个块时,它仍然会插入。

  2. 当插入块时,它将呈现块中的内容(在我放置的块中),但也将其再次呈现为html中的某些文本,与插入块的位置相同

  3. 无论如何都会添加该块,是否包含帖子,但是只有在有帖子的情况下,才以html显示块文本。

由于堆栈编辑器中的错误,我也在此处发布了代码:https://pastebin.com/bTpGSRzN 图片:https://imgur.com/a/jTEgoKg 视频:https://www.youtube.com/watch?v=DMewEz02EPs

在第一张图片中,它在添加代码和文本的同时在“ if”中添加块“ else”

在第二个中,当实际上没有帖子时,它会在容器中将文本内的内容呈现为文本时添加“ else”块

fclass是在没有帖子的情况下修复页脚,因为页脚将位于屏幕中间,因为没有帖子会占用屏幕空间

PS:在“ posts.html”内部仅存在一个for循环,用于创建包含每个帖子的图像和信息的文章元素,仅此而已

<div class="container">
    {% if posts %}
        <h2 class="titlep mtop">Posts marcados com <span class="focotxt">{{ tag }}</span></h2>
        <p><small>{{ posts.paginator.count }} encontrados</small></p>
        {% include "posts.html" %}
        {% include "pagination_posts.html" %}
    {% else %}
        {% block fclass %} fixed-bottom {% endblock fclass %}
        <h2 class="titlep mtop">Nenhum post marcado com <span class="focotxt"> {{ tag|truncatechars:20 }}</span></h2>
        <p><a href="/blog/">Voltar para o Blog</a></p>
    {% endif %}
</div>

views.py

def tags_search(request, tags):
    template = 'blog/post_tags.html'
    tag = tags

    q_obj = Q()
    for name in [tag]:
        # iexact or icontains
        q_obj |= Q(tags__name__iexact=name)

    post_list = Post.objects.filter(q_obj)

    page = request.GET.get('page', 1)
    paginator = Paginator(post_list, 1)
    try:
        posts = paginator.page(page)
    except PageNotAnInteger:
        posts = paginator.page(1)
    except EmptyPage:
        posts = paginator.page(paginator.num_pages)

    context = {'tag': tag, 'posts': posts, }
    return render(request, template, context)

0 个答案:

没有答案