我有一个包含属性...model = CharField()...
的模型LandingSnippet,它与上下文关键字有关(例如下面cars
中的context
)
我的视图中有下一个代码
def GeneratedLanding(request):
snippets = LandingSnippet.objects.all().filter(view_on=True).order_by('order')
context = {
'snippets':snippets,
...
'cars':Car.objects.all(), # this is cars
...
return render(request,'qlanding/generateindex.html',{'context':context})
如何通过关键字querySet cars
作为字符串获取上下文中的cars
例如
{{context}}
打印
{'snippets': <QuerySet [<LandingSnippet: Snippet1Title>, <LandingSnippet: 2 - about - Лучшая служба развозки детей>]>, 'services': <QuerySet []>, 'cars': <QuerySet []>, 'faqs': <QuerySet []>}
和
{{snippet.model}}
打印
cars
问题:
我如何获得{{ context.cars }}
?我认为类似context[snippet.model]
,其中snippet.model ='cars'
我要在包含时将其推入另一个模板中
{% if snippet.module %}
{% with "qlanding/snippets/module/"|add:snippet.module|add:".html" as path %}
{% include path with model=context[snippet.model] %} # But this is incorect while rendering
{% endwith %}
{% endif %}
答案 0 :(得分:0)
您可以这样编写一个简单的模板标签:
首先在您的应用程序目录中创建一个名为templatetags
的目录,该目录必须包含一个名为__init__.py
的空文件
在此目录中创建任何名称的文件。例如load_from_context
在此文件上写这些代码
from django import template
register = template.Library()
@register.tag(name="GetFromContext")
def get_from_context(parser, token):
bits = token.split_contents()
node_list = parser.parse(('endGetFromContext',))
variable = bits[1]
return GetFromContextNode(node_list, variable)
class GetFromContextNode(template.Node):
def __init__(self, node_list, variable):
self.node_list = node_list
self.variable = variable
def render(self, context):
variable_value = template.Variable(self.variable).resolve(context)
with context.push():
context['model'] = context.get(variable_value)
return self.node_list.render(context)
然后在您的模板中可以像这样使用它
{% load load_from_context %}
{# any code in your template #}
{% GetFromContext snippet.model %}
{% include path %}
{% endGetFromContext %}
答案 1 :(得分:0)
@vorujack,我仍然遇到相同的错误。但根据您的解决方案,我得到了下一步。
from Django import template
register = template.Library()
@register.simple_tag
def get_model_from_context(context,model_name):
return context[model_name]
以及我在视图中的用法
{% get_model_from_context context=context model_name=snippet.model as model %}
{% include "qlanding/snippets/module/"|add:snippet.module|add:".html" with model=model %}
非常感谢@vorujack