可重用 Django 应用程序中的基本模板

Base Template in reusable Django App

我想从自定义项目创建一个可重复使用的应用程序。

我想移至可重用应用程序的部分提供整个页面并在顶部使用它:

{% extends "myproject/base.html" %}

现在我不确定要使用什么基本模板。在新的可重用应用程序中,我不想使用 myproject,因为这是我无法共享的自定义代码。

我试图从伟大的 django 文档中获得帮助,但找不到解决方案 - 如果我是盲人,请原谅我:-)

在可重复使用的应用程序中在这里写什么?

{% extends ??????? %}

您需要将这些模板存储在应用程序文件夹中。

假设您有一个类似于 myproject/myreusableapp 的结构,您将在 myreusableapp 文件夹中创建一个模板文件夹,并将您的 base.html 文件存储在那里。

然后您将扩展该文件 {% extends "myreusableapp/base.html" %}

不幸的是,django 在这里没有提供官方约定。

有一个第三方文档项目为可重用模板定义了这些规则:

https://django-reusable-app-docs.readthedocs.org/en/latest/apps/templates.html

在官方 django 文档中获取约定的问题自 2012 年以来一直处于开放状态:

https://code.djangoproject.com/ticket/19106

这是我的票,与上面的票一样被关闭:

https://code.djangoproject.com/ticket/26501

...希望以后能达成协议

我是这样做的:

\project
|
+-\main
| |
| +-\template
| | |
| | +-\mainapp
| |   |
| |   +-base.html
| |   +-index.html
| |   +-...
| |
| +-\static
|   |
|   +-css
|   +-js
|   +-pics
|   +-...
|
+-\otherapp
  |
  +-...

其中 main 是用于标准操作(寻呼机、登录...)的应用程序,其中包含基本模板和静态。请注意,模板存储在 main/templates/main/.

在项目 settings.py 中,不要忘记在 STATICFILES_DIRS.

中注册 main/static

然后您可以使用 {% extends 'main/base.html' %} 进行部署。