【发布时间】:2012-02-22 02:22:39
【问题描述】:
我想我在这里遗漏了一个基本概念。在典型的 Django 项目中,您将有两个应用程序响应不同的 url:
http://localhost/myproj/app1/33
http://localhost/myproj/app2/newcomment.html
但是存在哪些机制来处理两个应用程序互补的情况 - 比如说一个提供内容,另一个提供演示?或者,一个是内容,另一个是一种静态的横向内容,应该出现在每个页面上。
特别是,我不明白这两个应用程序如何使用模板继承来扩展同一个模板。想象有一个带有模板“base.html”的基础应用程序“baseapp”:
...
<div blah blah>
{% block content %}
{% endblock %}
...
App1 扩展它:
{% extends "baseapp/templates/base.html" %}
{% block content %}
... here's the actual content...
{% endblock %}
App2 加个小横幅什么的:
{% extends "baseapp/templates/base.html" %}
{% block content %}
<div class="banner">Please support our site!</div>
{{ block.super }}
{% endblock %}
那么这两个模板可以通过哪些方式显示?我能想到:
- app1 可以扩展 app2 的模板。但这似乎是错误的:app1 是内容提供者,不应该依赖于 app2 这样微不足道的东西。
- app2 可以扩展 app1 的模板。但这似乎是错误的:现在 URL 方案必须通过 app2 汇集每个 URL(如果我理解正确的话)
- 中间件?
正如我所说,我可能遗漏了一些非常基本的东西。或者我做了一些我不知道的非常错误的假设。 (这个问题是我在Embed an optional Django application in another page, if that app is present 和How to capture and display information external to my webapp, but relevant to users of it? 之后的第三次尝试——我在界定问题时遇到了麻烦。)
【问题讨论】:
-
你的第二个应用是模板标签;这是您第一次尝试时的建议。
-
好的 - 我会仔细看看。
标签: django django-templates portlet multiple-inheritance