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。