0

Djangoテンプレートに問題があります。投稿を表示するために使用するベースHTMLを作成したいと思います。ビューからテンプレートを呼び出します。これには、ファイルがベースhtmlを拡張するhtmlファイルが含まれています。

見る

def main(request):
    all_posts = News.objects.all()
    return render_to_response("index.html", {'all_posts': all_posts})

テンプレート--index.html

<div id="content">
    {% include 'content.html' with posts=all_posts%}
</div>

content.html

{% extends "content_base.html" %}

{% for post in posts %}
    {% block date_of_post %} {{ post.date }} {% endblock %}
    {% block post_author %} {{ post.author }} {% endblock %}
    {% block post %} {{ post.content }} {% endblock %}
{% endfor %}

content_base.html

<div class="post">
    <h2 class="title"><a href="#">{% block blabla %}{% endblock %}</a></h2>
    <p class="meta"><span class="date">{% block date_of_post %}{% endblock %}</span><span class="posted">Posted by <a href="#">{% block post_author %}{% endblock %}</a></span></p>
    <div style="clear: both;">&nbsp;</div>
    <div class="entry">
        <p>
            {% block post %} {% endblock %}
        </p>    
        <p class="links">
            <a href="#" class="more">Read More</a>
            <a href="#" title="b0x" class="comments">Comments</a>
        </p>
    </div>
</div>

しかし、* all_posts *変数をcontent.htmlに渡すことができないようです。ここでの問題は何ですか?私は何か間違ったことをしていますか?

前もって感謝します。

4

3 に答える 3

2

ループをに移動し、直接index.htmlインクルードする必要がありますcontent_base.html。したがって、index.htmlは次のようになります。

<div id="content">
    {% for post in posts %}
        {% include 'content_base.html' %}
    {% endfor %}
</div>

そしてcontent_base.htmlは

<div class="post">
    <h2 class="title"><a href="#">{{ post.title }}</a></h2>
    <p class="meta"><span class="date">{{ post.date }}</span><span class="posted">Posted by <a href="#">{{{ post.author }}</a></span></p>
    <div style="clear: both;">&nbsp;</div>
    <div class="entry">
        <p>
            {{ post.content }}
        </p>    
        <p class="links">
            <a href="#" class="more">Read More</a>
            <a href="#" title="b0x" class="comments">Comments</a>
        </p>
    </div>
</div>
于 2012-12-23T21:56:05.407 に答える
2

ループで使用しているため、同じ名前のブロックを使用しています。

{% for post in posts %}
    {% block date_of_post %} {{ post.date }} {% endblock %}
    {% block post_author %} {{ post.author }} {% endblock %}
    {% block post %} {{ post.content }} {% endblock %}
{% endfor %}

あなたはそれをすることはできません。ここを見てください。

于 2012-12-23T21:48:38.610 に答える
1

正規化が多すぎると、あまり良くない場合があります。単純に持つことができindex.html、すべてのコードをそこに置くことができます(不要なブロックを回避します)。

<div id="content">
    {% for post in all_posts %}
        <div class="post">
            <h2 class="title"><a href="#">{{post.title}}</a></h2>
            <p class="meta"><span class="date">{{post.date}}</span><span class="posted">Posted by <a href="#">{{post.post_author}}</a></span></p>
            <div style="clear: both;">&nbsp;</div>
            <div class="entry">
                <p>
                    {{post.content}}
                </p>    
                <p class="links">
                    <a href="#" class="more">Read More</a>
                    <a href="#" title="b0x" class="comments">Comments</a>
                </p>
            </div>
        </div>
    {% endfor %}
</div>
于 2012-12-23T21:56:36.223 に答える