Django模板扩展

Django模板扩展,django,django-templates,Django,Django Templates,我是Django的新手,试图了解如何使用模板,但我在模板扩展方面遇到了问题。我有3个模板。base.html中的第一个 {% load staticfiles%} <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> <link rel="style

我是Django的新手,试图了解如何使用模板,但我在模板扩展方面遇到了问题。我有3个模板。base.html中的第一个

{% load staticfiles%}
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
<link rel="stylesheet" type="text/css" href="{%static 'css/main.css'%}">

    <title>Home</title>
</head>
<body >
<div class="page-header">
    <h1><a href="/">Django Project</a></h1>
</div>

<div class="content container">

    <div class="row">
        <div class="col-sm-8">
            {%block content %}

            {%endblock%}
        </div>

        <div class="col-sm-4">

            {%block lastposts %}

            {%endblock%}
        </div>
    </div>
</div>
</body>
</html>
url.py

from django.shortcuts import render
from django.utils import timezone

from .models import Post


# Create your views here.
def post_list(request):
    posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    return render(request, 'blog/post_list.html', {'posts': posts})
from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
]

如果要在post_list.html中显示最新的_posts.html的内容,则必须将其包括在内

post_list.html

{% extends 'blog/base.html' %}
{% block lastposts %}
<h3>Latest Posts</h3>

{%for post in posts%}
<a href=""><h4>{{post.title}}</h4></a>
{% endfor %}
{% endblock %}
{% extends 'blog/base.html' %}

{% block content %}

{%for post in posts %}
<a href=""><h1>{{post.title}}</h1></a>
<p>{{post.text|linebreaks}}</p>
<p><b>Author: </b>{{post.author}}</p>
<p><b>Published Date: </b>{{post.published_date}}</p>
{%endfor%}

{% endblock %}


{%block lastposts %}
{% include 'blog/latest_posts.html' %}
{% endblock %}

您能在浏览器中看到base.html模板吗?你确定你在
帖子
中有数据吗(如果没有,你至少应该能够看到
最新帖子
标题)?除了最新的posts.html内容之外,所有内容都会出现,而且我也看不到最新的帖子标题。你甚至可以在视图中呈现最新的post.html吗?向我们显示您的视图和项目树(文件夹和文件)。您在视图中呈现的模板是什么?由于post_列表和最新发布都扩展了base.html,所以我不清楚您正在渲染什么以及您希望如何工作。我只渲染post_列表。正如我所说的,我知道有些事情不对劲,但我不知道到底是什么。我只想把这三部分代码分开。此外,如果我做错了,我可以在不同的模板中扩展相同的基础@DainelBut如何像我使用post_list一样在base.html中显示最新的_帖子?共享您的视图.py和URL.py扩展模板将采用基本模板的结构,并将其应用于您在中调用的
扩展。后一个文件只提供用于填充基本模板的
块的内容。要显示第三个文件的内容,必须
包含它。在
base.html
中不需要这样做,只需定义
块。你确定你的
url.py
指向你的
base.html
而不是
post_list.html
?我更新了我的问题,你可以在那里找到vies.py和url.py。我试着像你说的那样包含,但它不起作用,如果你确信你的
视图.py
呈现到
base.html
而不是
post\u list.html
,那么它就意味着aks。正如我所怀疑的,您的更新显示是您渲染到
post_list.html
{% extends 'blog/base.html' %}

{% block content %}

{%for post in posts %}
<a href=""><h1>{{post.title}}</h1></a>
<p>{{post.text|linebreaks}}</p>
<p><b>Author: </b>{{post.author}}</p>
<p><b>Published Date: </b>{{post.published_date}}</p>
{%endfor%}

{% endblock %}


{%block lastposts %}
{% include 'blog/latest_posts.html' %}
{% endblock %}
<h3>Latest Posts</h3>

{%for post in posts%}
<a href=""><h4>{{post.title}}</h4></a>
{% endfor %}