我正在使用Django构建我的博客网站,我无法在我的项目中扩展模板。
我有两个模板:
Base.html是我的父模板,post.html是我的扩展base.html的子模板。
我无法让Django扩展post.html。当我运行web服务器base.html显示但没有来自post.html的文本。
我已经阅读了关于模板的Django文档以及如何扩展,我相信我必须语法正确,但我不确定为什么它不起作用?
我也在使用Boostrap这个项目。
感谢您的帮助, Nermin
post.html
{% extends "post/base.html" %}
{% block content %}
<div class="blog-post">
<h2 class="blog-post-title">Sample blog post</h2>
<p class="blog-post-meta">January 1, 2014 by <a href="#">Mark</a></p>
<p>Blog text goes here.</p>
</div><!-- /.blog-post -->
{% endblock %}
在这里输入代码
base.html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
<!-- load static files -->
{% load staticfiles %}
<title>Blog Title</title>
<!-- Bootstrap core CSS -->
<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<link href="../../assets/css/ie10-viewport-bug-workaround.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="{% static 'css/blog.css' %}" rel="stylesheet">
<!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
<!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
<script src="../../assets/js/ie-emulation-modes-warning.js"></script>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="blog-masthead">
<div class="container">
<nav class="blog-nav">
<a class="blog-nav-item active" href="#">Home</a>
<a class="blog-nav-item" href="#">About</a>
</nav>
</div>
</div>
<!-- blog post goes here -->
{% block content %}
{% endblock %}
<div class="container">
<div class="blog-header">
<h1 class="blog-title">Code'N Cofee Blog</h1>
<p class="lead blog-description">Live and write code. </p>
</div>
<div class="row">
<div class="col-sm-8 blog-main">
<nav>
<ul class="pager">
<li><a href="#">Previous</a></li>
<li><a href="#">Next</a></li>
</ul>
</nav>
</div><!-- /.blog-main -->
<div class="col-sm-3 col-sm-offset-1 blog-sidebar">
<div class="sidebar-module sidebar-module-inset">
<h4>About</h4>
<p>Etiam porta <em>sem malesuada magna</em> mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.</p>
</div>
<div class="sidebar-module">
<h4>Archives</h4>
<ol class="list-unstyled">
<li><a href="#">March 2014</a></li>
<li><a href="#">February 2014</a></li>
<li><a href="#">January 2014</a></li>
<li><a href="#">December 2013</a></li>
<li><a href="#">November 2013</a></li>
<li><a href="#">October 2013</a></li>
<li><a href="#">September 2013</a></li>
<li><a href="#">August 2013</a></li>
<li><a href="#">July 2013</a></li>
<li><a href="#">June 2013</a></li>
<li><a href="#">May 2013</a></li>
<li><a href="#">April 2013</a></li>
</ol>
</div>
<div class="sidebar-module">
<h4>Elsewhere</h4>
<ol class="list-unstyled">
<li><a href="#">GitHub</a></li>
<li><a href="#">Twitter</a></li>
<li><a href="#">Facebook</a></li>
</ol>
</div>
</div><!-- /.blog-sidebar -->
</div><!-- /.row -->
</div><!-- /.container -->
<footer class="blog-footer">
<p>Blog template built for <a href="http://getbootstrap.com">Bootstrap</a> by <a href="https://twitter.com/mdo">@mdo</a>.</p>
<p>
<a href="#">Back to top</a>
</p>
</footer>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="../../assets/js/vendor/jquery.min.js"><\/script>')</script>
<script src="../../dist/js/bootstrap.min.js"></script>
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="../../assets/js/ie10-viewport-bug-workaround.js"></script>
</body>
</html>
答案 0 :(得分:0)
我找到了解决方案。问题不在于两个html文件,而是在我的views.py文件中。基本上我在views.py中的索引函数渲染了base.html,因此在post.html的屏幕上没有显示任何内容
鉴于post.html正在扩展base.html,我需要编辑我的索引函数以返回并像postlow一样渲染post.html并修复代码。
希望这可以帮助其他有类似问题的人。
这是我的索引函数现在在views.py
中的显示方式 from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return render(request, 'post/post.html', {'': ''})
答案 1 :(得分:0)
Nermic Kekic的答案对我不起作用。
我不是专家,但以下是对我有用的。
问题是我的base.html(父级)不知道在哪里附加post.html(子级),所以我不得不提
{% block content %}
{% endblock %}
我的base.html正文中的这两行也对我有用,因为此块将告诉post.hml在哪里显示child的内容。
答案 2 :(得分:0)
{% block content %}
{% endblock content %}
您需要在 base.html
文件中添加以上代码行。在您的 (post.html) 文件中,您需要添加这些行以及其中的独特内容。这样 Django 就知道您可以在何处更改 post.html 文件。