代码之家  ›  专栏  ›  技术社区  ›  facha

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

  •  0
  • facha  · 技术社区  · 15 年前

    每个人。我刚从django开始,很抱歉问了一个可能很愚蠢的问题。

    想象一下,我有一个包含3个逻辑部分的网页:内容、动态菜单、横幅。在我看来,有一个模板类似于:

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

    但是,那我该怎么做呢?每一块都有其独立的逻辑,在其“独立的应用程序”的独立视图中。如何触发所有三个视图的执行并呈现所有三个模板?

    有没有一个类似sourceforge的django应用程序网站,我可以看看人们在实际项目中是如何做的?

    1 回复  |  直到 15 年前
        1
  •  2
  •   lprsd    15 年前

    标准做法如下:

    模板:

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

      {% extends "base.html" %}
          {% block body %}
          -- Your this page's content goes here.
          {% endblock %}
      
    • 您可以在必要时使用includes,但最好在可能的情况下使用extends。include被讨论是否包含在模板语言中。

    填充上下文:

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

    • 传递requestContext,它应该包含模板的许多标准需求。
    • 对于每个模板中需要的值,编写一个模板上下文处理器。
    • 在这个模板中需要这些上下文,然后填充到视图中。

    使用多个应用程序的视图:

    • 大多数为重用而编写的应用程序都将模板名作为标准参数,并包含额外的上下文。您将需要使用这些参数调用这些视图。
    • 有些应用程序会特意创建一个延迟评估的响应(比如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