扩展在 Django 1.9 中不起作用

Posted

技术标签:

【中文标题】扩展在 Django 1.9 中不起作用【英文标题】:extends not working in Django 1.9 【发布时间】:2016-09-29 13:01:02 【问题描述】:

当我将% extends "X.html" % 添加到我的子模板(父模板为“base.html”)时,仅加载父模板。当我把它拿走时,子模板就被加载了。我有另一个应用程序,其中我有一个看似相同的继承结构,所以我很难过。这是“base.html”:

<!DOCTYPE html>
% load staticfiles % 
<html>
  <head>
    % block js %
    <script src=" STATIC_URL js/jquery.1.12.4.min.js"></script>
    <script src=" STATIC_URL js/p5.js"
    % endblock %
    <title>myapp</title>
  </head>
  <body>
    <h1>Welcome to my app</h1>
  </body>
</html>

这里是“grow.html”

<!DOCTYPE html>
% extends "app/base.html" %
% block js %
  <script src=" STATIC_URL js/grow.js"></script>
% endblock %
% block content %
<body>
  <div id="message" style="visibility: hidden;"></div>
  <div id="tree"></div>
  <a href="/register/">register</a>
<form method="POST">
  % csrf_token %
  <input type="text" id="txt" />
  <input type="submit" id="grow" value="grow" style="color: grey;"/>
</form>
</body>
% endblock %

我肯定在我的views.py中调用了子模板,所以这不是问题:

def grow(request):
    ...
    return render(request, 'app/grow.html')

这是我的项目网址:

从 django.conf.urls 导入包含,url 从 django.contrib 导入管理员 从应用导入视图

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^grow/', include('app.urls')),
    url(r'^$', views.home, name="home"),    
    ]

和应用网址:

from django.conf.urls import url
from app import views

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

    ]

当我转到 URL /grow/ 时,我希望看到“grow.html”,但我看到的是“base.html”。

【问题讨论】:

你必须在base.html中添加% block content % % endblock % 【参考方案1】:

您的基本模板不包含content 块。所以它继承的,它只是无处可挡。

只需添加内容块。

  </head>
% block content %
  <body>
    <h1>Welcome to my app</h1>
  </body>
% endblock content %
</html>

【讨论】:

以上是关于扩展在 Django 1.9 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

从 1.8 升级到 1.9 Django Admin get_urls 不起作用

% url % 在 Django 中不起作用

为啥可选择的项目列表在 Django 中不起作用?

注销页面在 Django 中不起作用

为啥“发布”方法在我的 django 应用程序中不起作用?

Ajax 发布请求在 django 中不起作用