微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有django-cms和Django 1.3的django-debug-toolbar

如何解决带有django-cms和Django 1.3的django-debug-toolbar

|| 尝试同时使用django-debug-toolbar和django-cms时,我一直遇到错误。 \“ MpttMeta没有属性\'class \'\” 我感觉这与与Django CMS捆绑在一起的Mptt应用有关,但是我不确定,我已经在一些项目中看到了这一点,但是我很惊讶我无法在Google中找到错误消息的直接匹配,因此我认为我会在这里发布。 我尝试使用最新发布的版本的调试工具栏,develop分支和dcramer的fork,但这没什么区别。我使用的是Django 1.3和Django CMS 2.1.3。 有任何想法吗? 谢谢!     

解决方法

可能是与Django 1.3相关的任何问题。 Django CMS 2.1.3仅支持1.2.X分支:http://docs.django-cms.org/zh/2.1.3/getting_started/installation.html#requirements Django CMS开发人员Jonas Obrist说:“也许是 2.1将添加官方1.3支持\“     ,问题在于django-debug-toolbar期望MpttMeta类需要是一个'new style \'类,这是一个相当简单的补丁(django-cms / publisher / mptt_support.py中的第33行)。更改:
class MpttMeta:
class MpttMeta(object):
在Django-CMS 2.1.3中,它们仍然具有与Django-CMS捆绑在一起的自己的猴子补丁mptt。在下一版本的Django-CMS中,将不再捆绑其自己的mptt,而是依赖于独立开发的软件包。     ,或者,您可以将其放在您的.... urls.py中。不在settings.py中,因为项目将无法启动。
from publisher.mptt_support import MpttMeta
if not hasattr(MpttMeta,\'__class__\'):
    MpttMeta.__class__ = type
    ,
Caught AttributeError while rendering: class MpttMeta has no attribute \'__class__\'
我认为这与MPTTMeta类被加载到元类(MPTTModelBase)中的方式有​​关,这使得它没有类属性。 Monkeypatch修复是将有问题的语句包装在django-debug-toolbar中,如下所示:
try:
    text = \"method %s on %s object\" % (receiver.__name__,receiver.im_self.__class__.__name__)
except:
    text = \"method %s on %s object\" % (receiver.__name__,type(receiver.im_self).__name__)
这将输出稍微改变为
method finish_mptt_class on classobj object
显然这不是永久性的修复,但是它可以使您使用debug-toolbar + django-cms。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。