正在尝试创建注释窗体,如下所示:
class CommentCreationForm(forms.Form):
body = forms.CharField(widget=forms.Textarea)
author = forms.CharField()
def __init__(self, *args, **kwargs):
super(CommmentCreationForm, self).__init__(*args, **kwargs)
self.user = kwargs.pop('user', None)
def save(self):
data = self.cleaned_data
comment = Comment(body=data['body'], author=data['author'], user=self.user)
comment.save()
def clean(self):
return self.cleaned_data
你知道吗视图.py你知道吗
@login_required
def create(request):
try:
if is_post(request):
form = CommentCreationForm(request.user)
if form.is_valid():
print 'valid'
form.save()
return render_to_response("login.html", context_instance = RequestContext(request))
return render_to_response("login.html", context_instance = RequestContext(request))
return render_to_response("create.html", {'form':CommentCreationForm()}, context_instance = RequestContext(request))
except Exception as e:
print str(e)
如果我提交表单,它将返回:“User”对象没有“get”属性。我肯定我做错了什么,但我不知道是什么。你知道吗
首先,表单初始化不正确,
Form.__init__
的签名如下所示:其次,
self.user = kwargs.pop('user', None)
总是将self.user
设置为None
,除非调用代码是:最后,更好的方法是在某些范围内直接引用
request.user
,例如:在创建视图中
相关问题 更多 >
编程相关推荐