django - Django 使用 kwargs 将值从视图传递到非模型表单
问题描述
当我在我的视图中调用我的表单时,我试图将 OTHER_VALUE 作为参数传递给表单。
我这样做是因为我想从我的观点和表单中得到我的验证。
视图.py
OTHER_VALUE = "the query that i run to get silly conditions"
if request.method=='POST':
form = MY_FORM(request.POST, OTHER_VALUE)
表格.py
class MY_FORM(forms.Form):
real_value = forms.CharField()
def clean_real_value(self):
if OTHER_VALUE ...
这预计会引发错误:
__init__() got an unexpected keyword argument 'OTHER_VALUE'
=========
我尝试使用以下几种不同的变体设置初始化__init__
:
class MY_FORM(forms.Form):
real_value = forms.CharField()
def __init__(self, *args, **kwargs):
OTHER_VALUE = kwargs.pop('OTHER_VALUE')
super(MY_FORM, self).__init__(*args, **kwargs)
self.fields['OTHER_VALUE'].initial = OTHER_VALUE
但我不断收到这种类型的错误:
Exception Value: 'employee'
Exception Location: /Users/macbook/Desktop/OrgDB/orgchart/forms.py in __init__, line 42
解决方案
一种方法是将隐藏输入作为字段添加到表单中
class MY_FORM(forms.Form):
real_value = forms.CharField()
other_value = forms.CharField(max_length=255,required=False,
widget=forms.HiddenInput())
这个新字段可以在您的表单中提供,但最重要的是确保在检查表单验证之前添加该值。
OTHER_VALUE = "other_value"
if request.method=='POST':
data = request.POST.copy()
data['other_value'] = OTHER_VALUE
form = MY_FORM(data)
if form.is_valid():
pass
在您的表单中,您可以访问该值:
....# codes
real_value = forms.CharField()
other_value = forms.CharField(max_length=255,required=False,
widget=forms.HiddenInput())
def clean_real_value(self):
cleaned_data = super(FormName,self).clean_real_value()
OTHER_VALUE = cleaned_data.get("other_value")
if OTHER_VALUE ...
推荐阅读
- c# - 无法让 wpf 文本框绑定到我的播放器对象
- python - 当前的路径,客户,与其中任何一个都不匹配。即使所有其他路径都正确运行
- javascript - 没有Bootstrap的简单侧边栏,找不到任何方便的答案
- javascript - Typescript/Angular - 从对象数组中的属性创建列表
- ssh - Google Cloud Platform VM 无法从本地 SSH(权限被拒绝(公钥))
- c# - 如何在活动报表中多次调用一个表
- azure - 如何将 Azure Application Insights 添加到 .NET Core 应用程序?
- r - NA 时为轴刻度赋予新名称
- woocommerce - 在 Woocommerce 按钮单击上触发 Facebook 像素事件
- python - 在 Python 的其他地方使用循环的每次迭代作为变量