Hi,
Wenn ich meinen leckeren Kuchen von 13.3 auf den Kopf aktualisiert habe, wird beim Versuch, meine Webapp auszuführen, dieser Fehler ausgegeben:
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'
Wenn ich zurück zu Version 13.3 wechsle (commit a71dd6e85e18ec38e978e904c0c7a91dee11043d), dann funktioniert es einwandfrei.
Irgendeine Idee, was falsch sein könnte?
Vielen Dank
Könnten Sie Ihre Ressourcen posten?
in meiner urls.py importiere ich tastypie.api.Api
und importiere dann meine Ressourcen einzeln. Es scheint, dass es fehlschlägt, sobald es versucht, die erste Ressource zu laden. Dies ist zum Beispiel eine der Ressourcen, aber selbst wenn ich diese auskommentiere, stürzt sie bei der nächsten Ressource ab.
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
Ich habe gerade Regressionstests hinzugefügt, aber sie konnten den Fehler nicht reproduzieren: 3e1f5527b698c7121d4c5434d073b08d364d31f2
Könnten Sie weitere Informationen liefern? Wie nah ist Ihr Codebeispiel an Ihrem tatsächlichen Code?
Danke Sean, dass du das untersucht hast. Der Beispielcode ist sehr ähnlich, und ich habe im Grunde nur die Namen geändert. Ich werde meinerseits noch einmal überprüfen und versuchen, zu sehen, ob ein Element vorhanden ist, das relevant sein könnte und fehlt.
Schließen, zögern Sie nicht zu kommentieren, wenn Sie weitere Informationen haben.
@SeanHayes : Ich bin gerade auf dasselbe Problem Basisressource verwendet habe. Hier eine Reproduktion:
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()
Dies schlägt fehl, wenn der gleiche Stacktrace von hashemian in der Zeile class BaseResource(ModelResource):
eingefügt wird, da die BaseResource keinen Abfragesatz hat.
Meine Problemumgehung besteht im Moment darin, object_class = None
zu BaseResource.Meta
hinzuzufügen, dann funktioniert alles.
Ich denke, die eigentliche Lösung besteht darin, die resource.py-Zeile 1797 in if meta and getattr(meta, 'object_class'):
zu ändern
... oder wenn es wünschenswert ist, dass ModelResource-Unterklassen einen Fehler ausgeben, wenn queryset nicht festgelegt ist, dann könnte dieser Fehler expliziter sein. Ich denke jedoch nicht, dass meine BaseResource fehlschlagen sollte, da ich dann nicht sicher bin, wie ich das tun soll, was ich hier versuche.
Vielen Dank!
Hilfreichster Kommentar
@SeanHayes : Ich bin gerade auf dasselbe Problem Basisressource verwendet habe. Hier eine Reproduktion:
Dies schlägt fehl, wenn der gleiche Stacktrace von hashemian in der Zeile
class BaseResource(ModelResource):
eingefügt wird, da die BaseResource keinen Abfragesatz hat.Meine Problemumgehung besteht im Moment darin,
object_class = None
zuBaseResource.Meta
hinzuzufügen, dann funktioniert alles.Ich denke, die eigentliche Lösung besteht darin, die resource.py-Zeile 1797 in
if meta and getattr(meta, 'object_class'):
zu ändern... oder wenn es wünschenswert ist, dass ModelResource-Unterklassen einen Fehler ausgeben, wenn queryset nicht festgelegt ist, dann könnte dieser Fehler expliziter sein. Ich denke jedoch nicht, dass meine BaseResource fehlschlagen sollte, da ich dann nicht sicher bin, wie ich das tun soll, was ich hier versuche.
Vielen Dank!