1

我在一个 Django 项目中工作,在开发过程中我创建了一个应用程序,我相信它可能对其他项目有用。我想我已经开发了一个相当模块化的应用程序,除了一个方面。这就是这个问题的对象:模板。

就我而言,我的一个页面生成了一个表格,并试图保持尽可能干净,我没有添加任何 CSS、div 或任何东西。只是干净的 HTML。现在,我将如何在其他项目中使用这个应用程序使这张桌子看起来像样?您知道,使用通常的 CSS 样式甚至 JS(例如用于表格重新排序)。我认为的解决方案是在原始应用程序代码中到处添加 {% blocks %} ,但这似乎不合适。

有什么建议么?

4

2 回答 2

2

wrt/ 可重用应用程序,通常的模式是使用应用程序提供最小的工作模板(在 appname/templates/appname/ 中),并在项目的模板目录中基于每个项目覆盖它们。模板确实是特定于项目的,并且是“集成”层之一,因此您无法提供一刀切的模板。

于 2013-05-05T18:04:26.070 回答
2

如您在评论中所说,要创建一个可插入的应用程序,您可以在您的应用程序中创建一个模板目录。例如app/templates,除了您的 template_dir 设置中的目录之外。

在模板中使用扩展来继承可能因站点而异的基本 html 文件。

在呈现表格的模板中

table.html

{% extends "base.html" %}
{% block content %}
{% include "cleantable.html" %}
{% endblock %}

base.html

<html>
project specific CSS
project specific JS
<body>
{% block content %}
{% endblock %}
</body>
</html>

所以实际上你的项目结构如下

project
  |
  |---pluggable
  |      |
  |      |--templates
  |      |     |
  |      |     |---cleantable.html
  |      |     |
  |      |     |---table.html
  |      |     
  |      |--views.py <renders pluggable templates>
  |  
  |---templates<site specific templates>
  |    |
  |    |---base.html<site specific design>
  |
  |---<other apps>
于 2013-05-05T18:23:30.517 回答