2011-04-14 6 views
1

django-debug-toolbar와 django-cms를 함께 사용하려고 할 때 계속 오류가 발생합니다.django-debug-toolbar와 django-1.3과 함께 django-debug-toolbar 1.3

내가이 장고 CMS와 함께 번들로 제공되는 Mptt의 응용 프로그램과 함께 할 수있는 뭔가 느낌이있다

"MpttMeta는 더 속성 '클래스를'이 없다",하지만 난 모르겠어요, 난에 본 적이 몇 가지 프로젝트가 있지만 Google에서 오류 메시지에 대한 직접적인 히트를 찾을 수 없다는 것에 놀랐습니다. 그래서 여기에 게시 할 생각이었습니다.

최신 릴리스 버전의 디버그 툴바와 개발 분기 및 dcramer의 포크를 사용해 보았지만 차이는 없습니다. 나는 장고 1.3과 장고 CMS 2.1.3에있다.

아이디어가 있으십니까?

감사합니다.

답변

2

Django 1.3과 관련된 문제 일 수 있습니다.

장고 CMS 2.1.3는 1.2.x를 분기를 지원합니다 http://docs.django-cms.org/en/2.1.3/getting_started/installation.html#requirements

조나스 오브리스트, 장고 CMS 데브가 "Maybe a minor version of 2.1 will add official 1.3 support"

+0

장고 1.3과 관련이 없지만 django-cms에 포함 된 mptt의 버전입니다. John Scott의 회신을보십시오 –

+0

내가 작성한대로 장고 1.3과 관련된 문제 일 수 있으며 [새로운 스타일 클래스는 꽤 ​​오래되었습니다.] (http://docs.python.org/reference/datamodel.html#new-style-and -classic-classes) python 기능을 제공합니다. – Xaerxess

0
Caught AttributeError while rendering: class MpttMeta has no attribute '__class__' 

내가 MPTTMeta 클래스가로드되고이 방법으로해야 할 일을했을 믿고 말한다 메타 클래스 (MPTTModelBase)에 클래스 속성이 없습니다.

monkeypatch의 수정과 같이 장고 디버그 도구 모음에서 잘못된 문을 래핑하는 것입니다 :

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 

하지 영구적 인 수정이되기 위해 약간의 출력을 변경하지만, 그것은 당신에게 디버그 툴바 + django-cms 작업을 가져옵니다.

3

문제는 django-debug-toolbar가 MpttMeta 클래스가 '새로운 스타일'클래스 여야한다는 것입니다.이 클래스는 상당히 간단한 패치입니다 (django-cms/publisher/mptt_support.py의 33 행). 변경 :

class MpttMeta: 

장고-CMS 2.1.3에서

class MpttMeta(object): 

에, 그들은 여전히 ​​자신의 원숭이 패치 mptt 장고 - CMS와 함께 번들 있습니다. Django의 다음 릴리스에서는 CMS가 더 이상 자체 mptt를 번들로 제공하지 않고 독립적으로 개발 된 패키지에 의존합니다.

1

또는 이것을 예를 들어 urls.py에 넣을 수 있습니다. 프로젝트가 시작되지 않기 때문에 settings.py에 없습니다.

from publisher.mptt_support import MpttMeta 
if not hasattr(MpttMeta, '__class__'): 
    MpttMeta.__class__ = type