0

我正在做一个 html 和 base 的网站(所有页面都在其中扩展)我想放置一个社交网络图标会话。由于此会话基于 html,因此它应显示在网站的所有页面上。

我不想把这个会话放在静态 html 中,我想在 django 中使用模型。这已经完成了。

问题:我是否必须将社交网络图标会话放在每个视图上,或者我可以制作一个单独的视图并让所有其他人扩展这个视图?我怎样才能做到这一点?

4

2 回答 2

1

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

模板标签/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 ... %}
于 2012-10-22T20:42:08.140 回答
0

使用RequestContext和 acontext_processor将模板变量注入使用RequestContext.

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

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 }}到每个模板的方式。

于 2012-10-22T20:41:53.277 回答