在 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 表单变量

Django 访问不属于表单的字段

如何在 Django 中访问表单提交按钮的值?

如何在Django的视图功能中访问Django模板中表单中的复选框[关闭]

在 django View 类中访问表单“字段”

使用请求对象访问 django 视图中的 html 表单字段