Python 在Django模板中,如何访问其键有空格的dict元素的属性?

Python 在Django模板中,如何访问其键有空格的dict元素的属性?,python,django,django-templates,Python,Django,Django Templates,我有一个模板收到的表单的dict: forms = {'Cholera': CholeraForm(), 'Foot And Mouth Disease': FootMouthDiseaseForm()} 计划是在selectform元素中显示每个键,根据选择的值,我将显示正确的表单。访问键中有空格的dict元素是一个非常简单的问题,通过模板标记解决: @register.filter def get(value, arg): """ Template tag

我有一个模板收到的表单的
dict

forms = {'Cholera': CholeraForm(), 'Foot And Mouth Disease': FootMouthDiseaseForm()}
计划是在
select
form元素中显示每个键,根据选择的值,我将显示正确的表单。访问键中有空格的
dict
元素是一个非常简单的问题,通过模板标记解决:

@register.filter
def get(value, arg):
    """
            Template tag used for getting the value out of a dict when the key has whitespace.
    """
    return value[arg]
这使我可以得到如下形式:

{{ forms|get:'Foot And Mouth Disease' }}
但是,我遇到的一个问题是,我无法访问特定的表单元素。我希望能够做到这一点:

{{ forms|get:'Foot And Mouth Disease'.element }}
或者这个:

{{ (forms|get:'Foot And Mouth Disease').element }}

但两者都不起作用。我得到每个模板的语法错误。如何访问以这种方式访问的表单的特定表单元素?

您可以将
一起使用:

{{ with forms|get:'Foot And Mouth Disease' as item }}
{{ item.element }}
{{ endwith }}

但更好的方法可能是将过滤器更改为分配标记,直接将项目添加到上下文中。

我认为模板将以html格式呈现表单。如果您只计划为该页面显示一个特定的表单,那么最好将每个表单分配给不同的变量,或者在views.py中执行任何逻辑。我当然愿意这样做,但我不确定怎么做。视图不知道将显示哪个窗体。其基本思想是,该应用程序的用户可以选择一种疾病,并且根据他们选择的疾病,应该询问不同的问题集。这可以通过常规html页面逐页方式完成,其中选择特定疾病将重定向到具有该特定表单的另一页面。或者,您可以使用一些ajax动态更改同一页面上的表单。无论您的需求需要哪一种,或者您对哪一种更满意。我想我可以研究AJAX的实现方式。那应该更优雅,应该能解决我的问题。谢谢我可能会在构建dict时对表单标题进行slagify,然后在模板上取消slagify。