【问题标题】:Django: reusable templates: extend from base.htmlDjango:可重用模板:从 base.html 扩展
【发布时间】:2015-09-30 06:34:21
【问题描述】:

django 模板中“extends”方法最可重用的方式是什么?

我经常看到这种情况:

{% extends 'base.html' %}

不幸的是,这对我不起作用。模板加载器的顺序首先从不同的应用加载模板。

我有一个使用 Django1.8 从头开始​​创建的默认 django 项目和应用程序。

我该怎么办:

  • 使用不同的名称,例如“my_base.html”
  • 改变模板加载器的顺序
  • 其他解决方案?

【问题讨论】:

    标签: python django django-templates


    【解决方案1】:

    解决这个问题的简单方法是命名您的模板。创建一个应用程序并在应用程序目录中(默认为views.py)创建一个模板目录,并在该目录中创建一个子目录,该目录是应用程序的名称。

    假设您有一个项目myproj 和一个名为registration 的应用程序,那么您将拥有:

    .
    ├── manage.py
    ├── myproj
    │   ├── __init__.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    └── registration
        ├── admin.py
        ├── __init__.py
        ├── migrations
        │   └── __init__.py
        ├── models.py
        ├── templates
        │   └── registration
        │       └── base.html
        ├── tests.py
        └── views.py
    

    现在,即使您有另一个应用程序的模板名为 base.html,您也可以随时使用 {% extends 'registration/base.html' %} 加载您需要的特定模板

    【讨论】:

    • 是的,这适用于来自名为“注册”的应用程序的模板。如果我希望“注册”应用程序可重用,registration/base.html 扩展自哪个模板?
    • "registration/base.html 扩展自哪个模板?" => 规范是扩展“base.html”,它应该是项目自己的基本模板,并让开发人员在需要时覆盖您的应用程序的模板(通常是这种情况)。
    猜你喜欢
    • 1970-01-01
    • 2013-08-01
    • 2016-06-11
    • 2012-09-27
    • 2016-07-12
    • 2021-03-23
    • 1970-01-01
    • 2020-02-04
    • 2021-02-05
    相关资源
    最近更新 更多