错误“ NoneType”对象没有属性“ __dict__” [英] error 'NoneType' object has no attribute '__dict__'

查看:118
本文介绍了错误“ NoneType”对象没有属性“ __dict__”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经接受了此错误,并且不允许我将其保存在表单中。初始数据在表格中显示良好,但是保存对我构成了挑战。希望有人能帮忙,我真的很困

I have encoutered this error and its not letting me save the info in the form. The initial data is showing well in the form but saving is challenging me. Hope someone can help, I'm really stuck

class UserPostCreatView(CreateView):
   form_class = PostModelForm
   template_name = 'posts/post_form.html'
   success_url = "/profile/{user_slug}/wall"



def get_initial(self):
    # Get the initial dictionary from the superclass method
    initial = super(UserPostCreatView, self).get_initial()
    user_slug = self.kwargs.get('user_slug')
    user_content_type = ContentType.objects.get_for_model(authomodel.User)
    auth_user = get_object_or_404(authomodel.User, user_slug=user_slug)
    auth_user_id = auth_user.id
    # Copy the dictionary so we don't accidentally change a mutable dict
    initial = initial.copy()
    initial = {
    "content_type": user_content_type,
    "object_id" : auth_user_id,
     }
    return initial

def form_valid(self, form):
    return HttpResponseRedirect(self.get_success_url())





def get_form_kwargs(self):
    """
    Returns the keyword arguments for instantiating the form.
    """
    kwargs = {
        'initial': self.get_initial(),
    }

    if self.request.method in ('POST', 'PUT'):
        kwargs.update({
            'data': self.request.POST or None, 
            'files': self.request.FILES or None})
    return kwargs


def get_form_class(self):
    return self.form_class




Traceback:

Traceback:

文件 C:\Program
文件\Python35 \libbsite-packages\django\core\handlers\exception.py位于
内部
41中。response = get_response(request)

File "C:\Program Files\Python35\lib\site-packages\django\core\handlers\exception.py" in inner 41. response = get_response(request)


中的文件 C:\Program
文件\Python35\lib\站点包\django\core\handlers\base.py _legacy_get_response
249. response = self._get_response(request)

File "C:\Program Files\Python35\lib\site-packages\django\core\handlers\base.py" in _legacy_get_response 249. response = self._get_response(request)

File C:\Program
Files\Python35\lib\site -packagesbdjango\core\handlers\base.py in
_get_response
187. response = self.process_exception_by_middleware(e,request)

File "C:\Program Files\Python35\lib\site-packages\django\core\handlers\base.py" in _get_response 187. response = self.process_exception_by_middleware(e, request)

File C:\Program
Files\Python35\lib\site-packages bdjango\core\handlers\base.py,位于
_get_response
185中。response = wrap_callback(request,* callback_args,** callback_kwargs)

File "C:\Program Files\Python35\lib\site-packages\django\core\handlers\base.py" in _get_response 185. response = wrapped_callback(request, *callback_args, **callback_kwargs)

在视图
中的文件 C:\Program
文件\Python35\lib\site-packages\django\views ingeneric\base.py 。return self.dispatch(request,* args,** kwargs)

File "C:\Program Files\Python35\lib\site-packages\django\views\generic\base.py" in view 68. return self.dispatch(request, *args, **kwargs)

文件 C:\Program
Files\Python35\lib\
中的site-packages\django\views\generic\base.py
88.返回处理程序(请求,* args,** kwargs)

File "C:\Program Files\Python35\lib\site-packages\django\views\generic\base.py" in dispatch 88. return handler(request, *args, **kwargs)

文件 C:\Program
文件\Python35\lib\site-packages\django\views\generic\edit.py b 217. return super(BaseCreateView,self).post(request,* args,** kwargs)

File "C:\Program Files\Python35\lib\site-packages\django\views\generic\edit.py" in post 217. return super(BaseCreateView, self).post(request, *args, **kwargs)

File C:\Program
Files\ \Python35\
183中的 libsite-packagesdjangoviewsgeneric\edit.py。return self.form_valid(form)

File "C:\Program Files\Python35\lib\site-packages\django\views\generic\edit.py" in post 183. return self.form_valid(form)

文件
C:\Users\wahab\Desktop\site1\ostra\ostrakodecommerce\posts\views.py
在form_valid
207中。return HttpResponseRedirect(self.get_success_url())

File "C:\Users\wahab\Desktop\site1\ostra\ostrakodecommerce\posts\views.py" in form_valid 207. return HttpResponseRedirect(self.get_success_url())

文件 C:\Program
Files\Python35\lib\site-packages\django\
中的 views\generic\edit.py get_success_url
148。url = self.success_url.format(** self.object。 dict

File "C:\Program Files\Python35\lib\site-packages\django\views\generic\edit.py" in get_success_url 148. url = self.success_url.format(**self.object.dict)

异常类型:/profile/-.​​1/create异常AttributeError:
'NoneType'对象没有属性' dict '

Exception Type: AttributeError at /profile/-.1/create Exception Value: 'NoneType' object has no attribute 'dict'


推荐答案

您已覆盖 form_valid 方法但没有执行该方法执行的任何默认操作,特别是保存对象。

You have overridden the form_valid method but haven't done any of the default actions performed by that method, in particular saving the object.

您可以通过调用超级我来解决此问题。 thod,但没有意义;无论如何,重定向到成功网址是该方法的工作。完全删除您的 form_valid 方法,并调用现有定义。

You could fix this by calling the super method, but there is no point; redirecting to the success url is what that method does anyway. Remove your form_valid method altogether and let the existing definition be called.

这篇关于错误“ NoneType”对象没有属性“ __dict__”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆