Ich verwende die Django Rest Framework, um eine API zu erstellen, und eine Implementierung auf meinem Entwicklungscomputer. Ich wollte es heute schnell bereitstellen und es erweist sich als weitaus fehleranfälliger als erwartet. Ich habe Dependancen neu installiert, Django neu installiert, Stunden damit verbracht, Bugs zu jagen, aber diese letzte hat mich und Google besiegt.Mysteriöse Fehler in Python Urlobject von Django Rest Framework aufgerufen
Auf dem Entwicklungscomputer, wenn ich eine der Ansichten aus dem Framework aufrufen, bekomme ich die richtige Antwort (minus die statischen Dateien, aber ich werde später damit umgehen.) Auf der Deployment-Maschine bekomme ich diesen Fehler:
'SplitResult' object has no attribute '_replace'
die Zurückverfolgungs gehen durch einen Template-Tag in dem anderen Rahmen, aber der Fehler scheint in diesem Verfahren in urlobject geworfen werden:
def __replace(self, **replace):
"""Replace a field in the ``urlparse.SplitResult`` for this URL."""
return type(self)(urlparse.urlunsplit(
urlparse.urlsplit(self)._replace(**replace)))
ich das auf meiner Entwicklung Maschine nicht wiedergeben kann, und ich finde keine Hinweise auf diesen Fehler anywh ehe. Nur für den Fall, dass ich es auf dem Deployment Server mit Django 1.2, 1.3 und 1.4 versucht habe, aber der Fehler scheint nichts mit Django zu tun zu haben. Hier
ist die vollständige Rückverfolgung:
Django Version: 1.3.1
Python Version: 2.5.2
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'staticfiles',
'django.contrib.admin',
'django.contrib.admindocs',
'char',
'djangorestframework']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Traceback:
File "/usr/lib/python2.5/site-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.5/site-packages/django/views/generic/base.py" in view
47. return self.dispatch(request, *args, **kwargs)
File "/usr/lib/python2.5/site-packages/django/views/decorators/csrf.py" in wrapped_view
39. resp = view_func(*args, **kwargs)
File "/usr/lib/python2.5/site-packages/django/views/decorators/csrf.py" in wrapped_view
52. return view_func(*args, **kwargs)
File "/home/wfrp/wfrp-django/DjangoWfrp/external apps/django-rest-framework/djangorestframework/views.py" in dispatch
243. return self.final(request, response, *args, **kwargs)
File "/home/wfrp/wfrp-django/DjangoWfrp/external apps/django-rest-framework/djangorestframework/views.py" in final
196. return self.render(response)
File "/home/wfrp/wfrp-django/DjangoWfrp/external apps/django-rest-framework/djangorestframework/mixins.py" in render
251. content = renderer.render(response.cleaned_content, media_type)
File "/home/wfrp/wfrp-django/DjangoWfrp/external apps/django-rest-framework/djangorestframework/renderers.py" in render
351. ret = template.render(context)
File "/usr/lib/python2.5/site-packages/django/template/base.py" in render
123. return self._render(context)
File "/usr/lib/python2.5/site-packages/django/template/base.py" in _render
117. return self.nodelist.render(context)
File "/usr/lib/python2.5/site-packages/django/template/base.py" in render
744. bits.append(self.render_node(node, context))
File "/usr/lib/python2.5/site-packages/django/template/base.py" in render_node
757. return node.render(context)
File "/usr/lib/python2.5/site-packages/django/template/loader_tags.py" in render
127. return compiled_parent._render(context)
File "/usr/lib/python2.5/site-packages/django/template/base.py" in _render
117. return self.nodelist.render(context)
File "/usr/lib/python2.5/site-packages/django/template/base.py" in render
744. bits.append(self.render_node(node, context))
File "/usr/lib/python2.5/site-packages/django/template/base.py" in render_node
757. return node.render(context)
File "/usr/lib/python2.5/site-packages/django/template/defaulttags.py" in render
311. return self.nodelist_true.render(context)
File "/usr/lib/python2.5/site-packages/django/template/base.py" in render
744. bits.append(self.render_node(node, context))
File "/usr/lib/python2.5/site-packages/django/template/base.py" in render_node
757. return node.render(context)
File "/usr/lib/python2.5/site-packages/django/template/defaulttags.py" in render
227. nodelist.append(node.render(context))
File "/usr/lib/python2.5/site-packages/django/template/defaulttags.py" in render
500. output = self.nodelist.render(context)
File "/usr/lib/python2.5/site-packages/django/template/base.py" in render
744. bits.append(self.render_node(node, context))
File "/usr/lib/python2.5/site-packages/django/template/base.py" in render_node
757. return node.render(context)
File "/usr/lib/python2.5/site-packages/django/template/base.py" in render
792. output = self.filter_expression.resolve(context)
File "/usr/lib/python2.5/site-packages/django/template/base.py" in resolve
536. new_obj = func(obj, *arg_vals)
File "/home/wfrp/wfrp-django/DjangoWfrp/external apps/django-rest-framework/djangorestframework/templatetags/add_query_param.py" in add_query_param
7. return unicode(URLObject(url).with_query(param))
File "/home/wfrp/wfrp-django/DjangoWfrp/external apps/urlobject/lib/urlobject/urlobject.py" in with_query
117. return self.__replace(query=query)
File "/home/wfrp/wfrp-django/DjangoWfrp/external apps/urlobject/lib/urlobject/urlobject.py" in __replace
181. urlparse.urlsplit(self)._replace(**replace)))
Exception Type: AttributeError at /api/
Exception Value: 'SplitResult' object has no attribute '_replace'
Dies ist mein erstes Mal auf Stack-Überlauf - danke für die Hilfe.
Meine Vermutung sehen ist Mismatch Python-Version. Mein 2.7 hat zwar einen '_replace', aber ich kann keine Dokumente darüber finden. –