我正在做一个html和base的网站(所有页面扩展)我想要的 放一个社交网络图标的会话。本次会议以此为基础 html应该显示在网站的所有页面上。
我不想要 把这个会话放在一个静态的html中,我想在django中使用 楷模。这已经完成了。
问题:我是否必须在每个视图上放置社交网络图标会话,还是可以创建单独的视图,而所有其他人都可以扩展此视图? 我怎么能这样做?
答案 0 :(得分:1)
尝试使用inclusion tag。您可以创建一个函数来完成创建会话的所有工作,然后将其与特定的HTML块相关联。
<强> templatetags / session.py 强>
@register.inclusion_tag('includes/session_box.html')
def output_session_box(...):
...
return { .. }
关联的模板文件包含/ session_box.html ,可以像任何模板一样使用HTML。
然后您的 base.html 会:
{% load session %}
{% output_session_box ... %}
答案 1 :(得分:0)
使用RequestContext
和context_processor
使用RequestContext
将模板变量注入每个视图。
它就像一个python函数一样简单,接受request
作为arg,并返回一个字典传递给你的模板。
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 }}
。