django 将一个模板包含到另一个模板中
Posted
技术标签:
【中文标题】django 将一个模板包含到另一个模板中【英文标题】:django include a template into another template 【发布时间】:2018-02-02 06:43:09 【问题描述】:我正在尝试将一个模板包含到另一个模板中,但我现在遇到的问题是嵌入的模板不显示在我尝试嵌入的新模板中呈现的内容。
个人资料应用程序中的detail.html
% include "list.html" with instance=user.posts_created.all %
我在模板文件夹中有模板。可以看到模板,但内容未显示在 detail.html 中
将根据要求提供其他代码,谢谢
帖子应用中的views.py
def axle(request , tag_slug=None):
results = Post.objects.all().filter(draft=False)#.filter(publish__lte=timezone.now())
#results = results.filter(user=request.user)
tag = None
if tag_slug:
tag = get_object_or_404(Tag, slug=tag_slug)
results = results.filter(tags__in=[tag])
que = request.GET.get("q")
if que:
results =results.filter(
Q(title__icontains=que)|
Q(content__icontains=que)).distinct()
paginator = Paginator(results, 4) # Show 25 contacts per page
pages ="page"
page = request.GET.get('page')
try:
query = paginator.page(page)
except PageNotAnInteger:
query = paginator.page(1)
except EmptyPage:
query = paginator.page(paginator.num_pages)
context =
"objects": query,
"pages": pages
template = 'list.html'
return render(request,template,context)
【问题讨论】:
你是不是只有一个list.html
,能不能给个出处
是的,我只有一个
你能展示一下吗?
【参考方案1】:
您的view
中应该有这样的内容:
def post(request):
post_list = posts_created.objects.all() # or something which you want to do.
context =
'post_list': post_list,
return render(request, 'detail.html', context)
在template
:
% include "app_name/list.html" with objects=post_list %
【讨论】:
list.html 在另一个应用中 确保list.html
可以访问,你可能需要使用app_name/list.html
,检查你的模板结构,你就会知道如何在另一个应用程序中使用它。
@King 添加你的list.html
,或者确定你传入list.html
的变量,确保在这里使用相同的变量。就像如果您的list.html
中有% for object in object_list %
,请使用% include "app_name/list.html" with object_list=post_list %
。相应地使用您在list.html
中使用的内容,在detail.html
中使用相同的内容。
list.html 可访问
您在list.html
中从其对应的view
访问什么key
。如果是instance
,则可以,否则在detail.html
中使用它与您在list.html
中传递的相同以上是关于django 将一个模板包含到另一个模板中的主要内容,如果未能解决你的问题,请参考以下文章