Html 如何为所有模板获取相同的信息?
因此,在Django中,我有一个基本模板,其中包含一些联系人详细信息。但我生成的每个视图都必须有一条线Html 如何为所有模板获取相同的信息?,html,django,jinja2,django-2.1,Html,Django,Jinja2,Django 2.1,因此,在Django中,我有一个基本模板,其中包含一些联系人详细信息。但我生成的每个视图都必须有一条线 contact = Contact.objects.first() 然后我必须将该对象添加到使用模板加载的字典中 处理is的更好方法是什么?我发现很难相信我是用正确的方式做的 EXAMPLE views.py from django.shortcuts import render from services.models import Service, ServicesDetail from
contact = Contact.objects.first()
然后我必须将该对象添加到使用模板加载的字典中
处理is的更好方法是什么?我发现很难相信我是用正确的方式做的
EXAMPLE views.py
from django.shortcuts import render
from services.models import Service, ServicesDetail
from .models import Feature, CompanyDetail, TeamMember, TeamDetail, Banner
from contact.models import ContactDetail
import json
# Create your views here.
def home(request):
services = Service.objects
try:
overview = ServicesDetail.objects.first()
except ServicesDetail.DoesNotExist:
overview = ''
try:
company = CompanyDetail.objects.first()
except CompanyDetail.DoesNotExist:
company = ''
features = Feature.objects
contact_details = ContactDetail.objects.first()
banners = Banner.objects
return render(request, 'home.html', {'overview': overview,
'services': services,
'company': company,
'features': features,
'contact_detail': contact_details,
'banners': banners})
def company(request):
services = Service.objects
try:
company = CompanyDetail.objects.first()
except CompanyDetail.DoesNotExist:
company = ''
features = Feature.objects
contact_details = ContactDetail.objects.first()
return render(request, 'company.html', {'services': services,
'company': company,
'features': features,
'contact_detail': contact_details,})
def team(request):
services = Service.objects
members = TeamMember.objects
try:
teampage = TeamDetail.objects.first()
except TeamDetail.DoesNotExist:
teampage = ''
contact_details = ContactDetail.objects.first()
return render(request, 'team.html', {'services': services,
'members': members,
'teampage': teampage,
'contact_detail': contact_details,})
您不需要在每个视图中执行此操作,只需编写自定义: 并将其添加到
模板
设置:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'path.to.processor.contact_details'
],
},
},
]
您不需要在每个视图中执行此操作,只需编写自定义: 并将其添加到
模板
设置:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'path.to.processor.contact_details'
],
},
},
]
您可以切换到并编写自定义基类
class MyBaseTemplateView(TemplateView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['contact_details'] = ContactDetail.objects.first()
return context
class MyActualView(MyBaseTemplateView):
template_name = 'company.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
# set other specific context values for this view here
return context
并将这些视图添加到您的url.py
中,如下所示:
urlpatterns = [
path('', MyActualView.as_view(), name='myactualview'),
]
您可以切换到并编写自定义基类
class MyBaseTemplateView(TemplateView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['contact_details'] = ContactDetail.objects.first()
return context
class MyActualView(MyBaseTemplateView):
template_name = 'company.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
# set other specific context values for this view here
return context
并将这些视图添加到您的url.py
中,如下所示:
urlpatterns = [
path('', MyActualView.as_view(), name='myactualview'),
]
我最喜欢这个主意。但我的基本模板位于不同的子目录中。我应该在哪些视图中放置基本模板类。或者它在所有视图中都会出现?在子目录中并不重要,只需导入它即可。不,它不符合您的所有视图,您应该使用此基本模板查看需要
联系详细信息的视图
我最喜欢这个想法。但我的基本模板位于不同的子目录中。我应该在哪些视图中放置基本模板类。或者它在所有视图中都会出现?在子目录中并不重要,只需导入它即可。不,它不适用于您的所有视图,您应该使用此基本模板来查看需要联系详细信息的视图
我刚刚在另一个项目上使用了此方法。工作真的很好,谢谢你,所以muchi在另一个项目中使用了这种方法。真的很好用,非常感谢