【问题标题】:How to put multiple models on the same page?如何将多个模型放在同一页面上?
【发布时间】:2012-10-22 20:07:53
【问题描述】:

我正在做一个 html 和 base 的网站(所有页面都扩展)我想要 放置一个会话的社交网络图标。由于本次会议是基于 html 它应该显示在网站的所有页面上。

我不想 将此会话放在静态 html 中,我想在 django 中使用 楷模。这已经完成了。

问题:我是否必须将社交网络图标的会话放在每个视图上,还是我可以制作一个单独的视图,而所有其他人都扩展此视图? 我该怎么做?

【问题讨论】:

    标签: django django-models django-templates


    【解决方案1】:

    尝试使用inclusion tag。您可以创建一个函数来完成创建会话的所有工作,然后将其与特定的 HTML 块相关联。

    templatetags/session.py

    @register.inclusion_tag('includes/session_box.html')
    def output_session_box(...):
        ...
        return { .. }
    

    相关的模板文件 includes/session_box.html 会像任何模板一样具有 HTML。

    然后你的 base.html 会有:

    {% load session %}
    {%  output_session_box ... %}
    

    【讨论】:

      【解决方案2】:

      使用RequestContextcontext_processor 将模板变量注入到每个使用RequestContext 的视图中。

      就像一个接受request作为参数的python函数一样简单,并返回一个字典以传递给你的模板。

      https://docs.djangoproject.com/en/dev/ref/templates/api/#django.template.RequestContext

      def my_processor(request):
          return {'foo': 'bar'}
      
      TEMPLATE_CONTEXT_PROCESSORS = (
           # add path to your context processor here.
      )
      

      我通常有一个用于基础的每个项目处理器...这正是 django 将{{ user }}{{ STATIC_URL }} 添加到每个模板的方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-13
        • 1970-01-01
        • 1970-01-01
        • 2012-12-13
        • 2013-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多