我正在扩展页眉和页脚,但是当我在页脚中传递数据时,它仅在主页上可见,在其他页面上不可见
Posted
技术标签:
【中文标题】我正在扩展页眉和页脚,但是当我在页脚中传递数据时,它仅在主页上可见,在其他页面上不可见【英文标题】:I am extending my header and footer but when I pass data in footer it is visible only at home page not on other pages 【发布时间】:2021-03-12 01:33:09 【问题描述】:我正在扩展我的页眉和页脚,但是当我在页脚中传递数据时,它仅在主页上可见,而在其他页面上不可见。 我知道我必须在每一页上传递这些数据,但我正在寻找一个简单的解决方案 示例:
from django.shortcuts import render,redirect
from footer.models import Footer
def home(request):
contact_info = Footer.objects.all()
return render(request,'frontend/index.html', 'contact_info':contact_info)
Index.html
<div class="col-md-3 col-md-push-1">
<div class="gtco-widget">
<h3>Get In Touch</h3>
<ul class="gtco-quick-contact">
% if contact_info %
% for i in contact_info %
<li><a href="tel: i.phone "><i class="icon-phone"></i> i.phone</a></li>
<li><a href="mailto: i.email "><i class="icon-mail2"></i> i.email </a></li>
<li><a href="http://maps.google.com/?q= i.location "><i class="ti-location-pin"></i> i.location </a></li>
% endfor %
% endif %
</ul>
</div>
</div>
在联系页面:
在索引页面:
【问题讨论】:
【参考方案1】:如果您需要每个页面中的数据,那么您可以使用上下文处理器。
在你的应用文件夹中,创建 context_processor.py
在 context_processor.py:
def context_processor(request):
context =
context['data'] = 'Some data'
return context
在 settings.py:
TEMPLATES = [
...,
'OPTIONS':
...,
'app_name.context_processor.context_processor'
]
在您的模板中。在你的情况下,你可以在你的 footer.html 中使用
data
仅供参考:您也不需要使用自己的视图。
【讨论】:
Hemant Yadav(印度德里):是的,我用过这个,对我来说效果很好。因为我认为这不仅适用于页眉或页脚,即使您可以在这里传递模型,您也可以在项目模板中的任何位置调用。 是的,取决于要求。【参考方案2】:context_processor.py
from designzoned.models import ServicesModel
def context_processor(request):
context =
context['service_list'] = ServicesModel.objects.all()
return context
settings.py
TEMPLATES = [
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS':
'context_processors': [
'django.template.context_processors.debug',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django.template.context_processors.request',
# In below line you have to write like this
'designzoned.context_processor.context_processor',
],
,
,
]
header.html
<ul class="dropdown-menu">
% for service in service_list %
<li><a href="% url 'services_detail' service.slug %">
service.name </a></li>
% endfor %
</ul>
【讨论】:
以上是关于我正在扩展页眉和页脚,但是当我在页脚中传递数据时,它仅在主页上可见,在其他页面上不可见的主要内容,如果未能解决你的问题,请参考以下文章