在 Django 表单中访问变量
Posted
技术标签:
【中文标题】在 Django 表单中访问变量【英文标题】:Accessing variables in Django forms 【发布时间】:2016-05-21 00:08:29 【问题描述】:我在这里遇到的问题是如何在表单中显示一些额外的文本, 特别是上一步的值。重点是向用户显示一条消息,例如“您已选择 value_from_step_0 作为开胃菜,现在选择主菜。”
我可以从步骤 0 中获取该值,如下所示:
class MenuWizard(SessionWizardView):
def get_form_kwargs(self, step=None):
kwargs =
if step == '1':
starter = self.get_cleaned_data_for_step('0')['starter']
kwargs.update('starter': starter)
class MainCourseForm(forms.Form):
def __init__(self, *args, **kwargs):
starter = kwargs.pop('starter')
print "0 chosen".format(starter) # This works
super(DomainForm, self).__init__(*args, **kwargs)
# What next?
如果我不弹出“starter”值,那么超级调用会失败。但是,我怎样才能将该值放入相关模板中?大概我需要在 init 中做进一步的事情或覆盖其他事情,但是什么?
【问题讨论】:
【参考方案1】:首先,请注意 1.7 不受支持,表单向导在 1.8 中已从 Django 中删除,现在位于第三方 formtools 库中。
这不是表单的真正工作,而是视图。 SessionWizardView 是一个标准的基于类的视图,与大多数基于类的视图一样,它允许您覆盖get_context_data
以向模板内容添加元素。请参阅the documentation,其中有一个使用self.steps.current
来检查当前步骤名称的示例。
【讨论】:
谢谢,模板问题解决了。事实上,我正在使用带有 formtools 的 1.8,但在遵循该文档时遇到了麻烦。以上是关于在 Django 表单中访问变量的主要内容,如果未能解决你的问题,请参考以下文章
在 html 页面内的 javascript 中访问 django 表单变量