أهلا،
عندما قمت بتحديث tastypie الخاص بي من 13.3 إلى الرأس ، فإن محاولة تشغيل تطبيق الويب الخاص بي يلقي هذا الخطأ:
Request Method: GET
Request URL: http://192.168.0.104:8888/accounts/login/?next=/dashboard/
Django Version: 1.8.8
Python Version: 2.7.12
Installed Applications:
('longerusernameandemail',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'tastypie',
'myapp',
'widget_tweaks',
'corsheaders')
Installed Middleware:
('corsheaders.middleware.CorsMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
Traceback:
File "/home/user/anaconda2/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
119. resolver_match = resolver.resolve(request.path_info)
File "/home/user/anaconda2/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
365. for pattern in self.url_patterns:
File "/home/user/anaconda2/lib/python2.7/site-packages/django/core/urlresolvers.py" in url_patterns
401. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/home/user/anaconda2/lib/python2.7/site-packages/django/core/urlresolvers.py" in urlconf_module
395. self._urlconf_module = import_module(self.urlconf_name)
File "/home/user/anaconda2/lib/python2.7/importlib/__init__.py" in import_module
37. __import__(name)
File "/home/user/webserver/myapp/urls.py" in <module>
7. from myapp.api import UserResource
File "/home/user/webserver/myapp/api.py" in <module>
303. class MyResource(ModelResource):
File "/home/user/anaconda2/lib/python2.7/site-packages/tastypie/resources.py" in __new__
1797. if meta and meta.object_class:
Exception Type: AttributeError at /accounts/login/
Exception Value: class Meta has no attribute 'object_class'
إذا عدت إلى الإصدار 13.3 (الالتزام a71dd6e85e18ec38e978e904c0c7a91dee11043d) فإنه يعمل بشكل جيد.
أي فكرة عما قد يكون الخطأ؟
شكرا
هل يمكنك نشر الموارد الخاصة بك؟
في urls.py الخاص بي ، أقوم باستيراد tastypie.api.Api
ثم أقوم باستيراد الموارد واحدًا تلو الآخر. يبدو أنه فشل بمجرد محاولته تحميل المورد الأول. على سبيل المثال ، هذا أحد الموارد ، ولكن حتى إذا قمت بالتعليق على هذا ، فإنه يتعطل في المورد التالي.
class MyResource(ModelResource):
class Meta:
queryset = MyModel.objects.all()
fields = ['my_field']
allowed_methods = ['get']
resource_name = 'my_resource'
authentication = BasicAuthentication()
include_resource_uri = False
لقد أضفت للتو اختبارات الانحدار لكنها فشلت في إعادة إنشاء الخطأ: 3e1f5527b698c7121d4c5434d073b08d364d31f2
هل يمكنك تقديم المزيد من المعلومات؟ ما مدى قرب عينة التعليمات البرمجية الخاصة بك من التعليمات البرمجية الفعلية الخاصة بك؟
شكرا شون للنظر في هذا. يشبه نموذج الكود إلى حد كبير ، وقمت بتغيير الأسماء بشكل أساسي. سوف أتحقق مرة أخرى من ناحيتي وأحاول معرفة ما إذا كان هناك أي عنصر قد يكون ذا صلة أو مفقودًا.
في الختام ، لا تتردد في التعليق إذا كان لديك المزيد من المعلومات.
SeanHayes : لقد واجهت هذه المشكلة فقط ، لأنني كنت
class BaseResource(ModelResource):
class Meta:
authentication = DefaultAuthentication()
class FooResource(BaseResource):
class Meta(BaseResource.Meta):
resource_name = 'foo'
queryset = Foo.objects.all()
class BarResource(BaseResource):
class Meta(BaseResource.Meta):
resource_name = 'bar'
queryset = Bar.objects.all()
فشل هذا مع نفس تتبع المكدس الذي تم لصقه بواسطة الهاشمي ، في السطر class BaseResource(ModelResource):
، لأن BaseResource لا يحتوي على مجموعة استعلام.
الحل الآن هو إضافة object_class = None
إلى BaseResource.Meta
، ثم يعمل كل شيء.
أعتقد أن الإصلاح الفعلي هو تغيير resources.py سطر 1797 إلى if meta and getattr(meta, 'object_class'):
... أو إذا كان سلوك الفئات الفرعية ModelResource مرغوبًا فيه لإلقاء خطأ عند عدم تعيين مجموعة الاستعلام ، فقد يكون هذا الخطأ أكثر وضوحًا. لا أعتقد أن BaseResource الخاص بي يجب أن يفشل ، ولكن منذ ذلك الحين لست متأكدًا من كيفية القيام بما أحاول القيام به هنا.
شكرا!
التعليق الأكثر فائدة
SeanHayes : لقد واجهت هذه المشكلة فقط ، لأنني كنت
فشل هذا مع نفس تتبع المكدس الذي تم لصقه بواسطة الهاشمي ، في السطر
class BaseResource(ModelResource):
، لأن BaseResource لا يحتوي على مجموعة استعلام.الحل الآن هو إضافة
object_class = None
إلىBaseResource.Meta
، ثم يعمل كل شيء.أعتقد أن الإصلاح الفعلي هو تغيير resources.py سطر 1797 إلى
if meta and getattr(meta, 'object_class'):
... أو إذا كان سلوك الفئات الفرعية ModelResource مرغوبًا فيه لإلقاء خطأ عند عدم تعيين مجموعة الاستعلام ، فقد يكون هذا الخطأ أكثر وضوحًا. لا أعتقد أن BaseResource الخاص بي يجب أن يفشل ، ولكن منذ ذلك الحين لست متأكدًا من كيفية القيام بما أحاول القيام به هنا.
شكرا!