我正在做一个 html 和 base 的网站(所有页面都在其中扩展)我想放置一个社交网络图标会话。由于此会话基于 html,因此它应显示在网站的所有页面上。
我不想把这个会话放在静态 html 中,我想在 django 中使用模型。这已经完成了。
问题:我是否必须将社交网络图标会话放在每个视图上,或者我可以制作一个单独的视图并让所有其他人扩展这个视图?我怎样才能做到这一点?
我正在做一个 html 和 base 的网站(所有页面都在其中扩展)我想放置一个社交网络图标会话。由于此会话基于 html,因此它应显示在网站的所有页面上。
我不想把这个会话放在静态 html 中,我想在 django 中使用模型。这已经完成了。
问题:我是否必须将社交网络图标会话放在每个视图上,或者我可以制作一个单独的视图并让所有其他人扩展这个视图?我怎样才能做到这一点?
尝试使用包含标签。您可以创建一个函数来完成创建会话的所有工作,然后将其与特定的 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 ... %}
使用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 }}
到每个模板的方式。