django:如何互连网页的各种逻辑部分

时间:2010-03-23 15:53:53

标签: django

大家。我刚刚开始使用django,对于一个可能很愚蠢的问题感到抱歉。

想象一下,我有一个包含3个逻辑部分的网页:内容,动态菜单,横幅。我似乎可以使用以下类似的模板:

{% include "banners.html" %}
{% include "menu.html" %}
{% include "content.html" %}

但是,我该怎么做?每个部分在其单独的应用程序中的单独视图中都有其独立的逻辑。如何触发所有三个视图的执行并渲染所有三个模板?

P.S。 django应用程序是否有类似sourceforge的网站,我可以看一看人们在实际项目中的工作方式?

1 个答案:

答案 0 :(得分:2)

执行此操作的标准方法如下:

模板:

  • 拥有一个base.html,其中包含横幅,菜单和空白的正文块。
  • 对于每个模板,扩展base.html并覆盖主体块。

    {% extends "base.html" %}
        {% block body %}
        -- Your this page's content goes here.
        {% endblock %}
    
  • 您可以根据需要使用包含,但在可能的情况下更喜欢扩展。有人认为Include包含在模板语言中。

填充上下文:

您现在有很多带占位符的模板需要替换为真正的“上下文”值。

  • 传递RequestContext,它应包含模板的许多标准要求。
  • 对于每个模板中需要的值,请编写模板上下文处理器。
  • 您在此模板中需要的那些上下文,您将在视图中填充。

使用多个应用的​​观看次数:

  • 为重用而编写的大多数应用程序都会包含template_name作为标准参数以及extra_context。您需要使用这些参数调用这些视图。
  • 有些应用程序会不遗余力地创建一个延迟评估的响应(如TemplateResponse),以便您可以在视图中获取它们填充的上下文。

Django可重用的应用程序:

你在开玩笑吗?他们都在互联网上!

http://github.com/search?q=django&type=Everything

http://bitbucket.org/repo/all/?name=django

http://code.google.com/hosting/search?q=django&projectsearch=Search+projects