【问题标题】:Django form submit errorDjango表单提交错误
【发布时间】:2013-12-26 10:52:30
【问题描述】:

我最初使用kwargs 填充我的 djnago 表单,

  • Forms.py

     class myForm(Forms.Form):  
       textbox1 = forms.CharField()  
       dropdown1 = forms.ChoiceField()  
    
    
       def __init__(self,*args,**kwargs):  
         choices = kwargs.pop('choices')  
         super(myForm,self).__init__(*args,**kwargs)  
         self.fields['dropdown1'] = forms.ChoiceField(choices=choices)  
    
  • views.py

    def myjob(req):  
      ch = {("1","A"),("2","B")}  
      if req.method == "POST":  
        frm = myForm(data=req.POST) # throws error saying can't find choices in Forms.py  
      else:  
        frm = myForm(choices=ch) # no problem here  
    

此代码在尝试再次调用 init 时在提交数据时引发错误。
如何正确提交?

【问题讨论】:

  • 这个问题不清楚。假设 req 是请求,该代码确实为您提供了已发布的数据。请发布实际视图,以及您得到的错误。
  • 请看一下,希望清楚。

标签: python django forms


【解决方案1】:

错误似乎很明显:代码需要 choices kwarg,而您没有在 POST 上提供它。您可以简单地添加它:

if req.method == "POST":  
    frm = myForm(data=req.POST, choices=ch)

【讨论】:

  • 是的,这行得通,但没有像重载初始化这样的东西,这样我就不必通过选择了吗?我对 django 比较陌生。
  • Python 没有重载。您已经重新定义了 init 以便它期待选择。但是,如果您没有通过它们,那么dropdown1 的可能选择是什么?如果没有分配任何选项,Django 将使用什么来验证该字段?
猜你喜欢
  • 1970-01-01
  • 2015-08-23
  • 2019-06-20
  • 2016-06-22
  • 2014-03-13
  • 2013-07-13
  • 2021-07-09
  • 2019-05-17
  • 2013-02-17
相关资源
最近更新 更多