2010-03-16 45 views
3

我想显示模板的形式,但我得到一个梦幻般的错误:的Django 1.2 - 铅与模板(WSGIRequest)形式

陷入AttributeError的同时渲染:“WSGIRequest”对象有没有属性 '得到'

的错误是在这一行:{%为外地在form.visible_fields%}

我的观点:

def view_discussion(request, discussion_id): 
discussion = get_object_or_404(Discussion, id=discussion_id) 
form = BaseMessageForm(request) 

return render(request,'ulule/discussions/view_discussion.html', { 
    'discussion':discussion, 
    'form':form, 
}) 

我的形式:

class BaseMessageForm(forms.Form): 
message_content = forms.CharField(widget=forms.HiddenInput()) 

我的模板:

<form action="" method="post"> 
{% csrf_token %} 
    {% for field in form.visible_fields %} 
     <div class="fieldWrapper"> 
      {% if forloop.first %} 
       {% for hidden in form.hidden_fields %} 
       {{ hidden }} 
       {% endfor %} 
      {% endif %} 

      {{ field.errors }} 
      {{ field.label_tag }}: {{ field }} 
     </div> 
    {% endfor %} 
    <p><input type="submit" value="Send message" /></p> 
</form> 

非常感谢您的帮助!

回答

6

如果我没有记错的话,你会得到的错误是因为你的表单的初始化符的签名是错误的:它的第一个参数是“数据”,在你的情况下它驻留在request.POST中(而不是请求本身),如果你到达的是一个POST。

通常与形式的看法会是这个样子:

def my_view(request, ...): 
    if request.method == 'POST': # The form has been submitted 
     form = MyForm(request.POST) 
     if form.is_valid(): 
      # do whatever you want here, save the form, etc 
    else: 
     form = MyForm() 
    return render_to_response('myform.html', ...) 
+0

非常感谢,我的错! – Tom 2010-03-16 09:23:29

+0

老是发生在我身上,说实话(现在实际上也是这样):) – shylent 2010-03-16 09:24:45

+1

只是为了澄清shylent的回答,它是>> form = MyForm(request.POST)<<需要重新检查的部分。我一个人(错误地)在做“form = MyForm(request)”这是错误的。 – 2010-10-05 20:29:58