我想在视图中插入另一个视图。
基本上,我使用的是Django过滤器包,值输出直接填充了模板,而无需编写任何视图类。
我想在当前模板中插入另一个html。
像这样:{% include 'countsnippet.html' %}
,但这给了我错误模板不存在。
或者,我尝试使用{% block content %}
<p> INFT : {{ inft }} </p>
{% endblock %}
,但这并没有调用视图,并且字段仍然为空。
我可以使用什么方法来包含另一个视图?
这是我的countsnippet html。
url(r'countsnippet/$', countsnippet, name='countsnippet')
我已经查看了countsnippet,其网址如下所示:
def countsnippet(request):
checkins = Attendee.objects.filter(checkin=True)
inft = Attendee.objects.filter(branch='INFT')
cmpn = Attendee.objects.filter(branch='CMPN')
mms = Attendee.objects.filter(branch='MMS')
return render( request, 'search/countsnippet.html', {'inft':
(checkins&inft).count(), 'cmpn': (checkins&cmpn).count(), 'mms':
(checkins&mms).count()} )
这是Countsnippet视图的代码段:
:style="{ background: `url(${imageSrc}) center` }"
答案 0 :(得分:0)
您不能将视图直接添加到模板中,因为它将需要一个请求和一个上下文。我认为要解决您的问题,您有两种选择:
您可以使用包含标签将具有上下文的模板集成到另一个模板中,请参阅django文档:https://docs.djangoproject.com/en/2.1/howto/custom-template-tags/#inclusion-tags
您可以将“视图”(在这种情况下为带有上下文的生成模板)直接包含到包装器视图的上下文字典中。您可以通过执行以下操作来实现此目的:
# views.py
from django.views.generic import TemplateView
from django.template import Context, Template
# Wrapper view
class WrapperView(TemplateView):
"""
This is the wrapper view, you include the inline view inside the
wrapper view get_context_data.
"""
template_name = "wrapper_template.html"
def get_context_data(self, **kwargs):
context = super(WrapperView, self).get_context_data(**kwargs)
inline_context = {
'name': 'Steve'
}
inline_html_template = Template('inline_template.html')
inline_view = html_template.render(Context(inline_context))
context['inline_view'] = inline_view
# In the wrapper template you can show the html of your inline_view with {{ inline_html|safe }}
return context
否则,您可以从这样的上下文生成视图,但是它将需要一个请求对象:InlineView.as_view(add_context=context)(request)
,但我不确定接下来如何将其嵌入到其他视图中。