I keep getting this error: 'str' object has no attribute 'resolve'
when trying to accessing the django admin site and I can't figure out why. I have apps within my project that have their own admin.py files. Could this cause it? here is my urls.py:
from django.conf.urls.defaults import *
import settings
from django.contrib.auth.views import login, logout
from views import index, simple, complex
from django.views.generic.simple import direct_to_template
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Example:
# (r'^django_jchat/', include('django_jchat.foo.urls')),
# Uncomment the admin/doc line below and add 'django.contrib.admindocs'
# to INSTALLED_APPS to enable admin documentation:
(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
(r'^admin/', include(admin.site.urls)),
...
Heres the trace back:
'str' object has no attribute 'resolve'
Request Method: GET
Django Version: 1.3
Exception Type: AttributeError
Exception Value:
'str' object has no attribute 'resolve'
Exception Location: /home/dockedin/webapps/peebletalk/lib/python2.7/
django/core/urlresolvers.py in resolve, line 252
Python Executable: /usr/local/bin/python
Python Version: 2.7.1
Python Path:
['/home/dockedin/webapps/peebletalk',
'/home/dockedin/webapps/peebletalk/lib/python2.7',
'/home/dockedin/lib/python2.7',
'/usr/local/lib/python27.zip',
'/usr/local/lib/python2.7',
'/usr/local/lib/python2.7/plat-linux2',
'/usr/local/lib/python2.7/lib-tk',
'/usr/local/lib/python2.7/lib-old',
'/usr/local/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/site-packages',
'/usr/local/lib/python2.7/site-packages/PIL']
Server time: Wed, 10 Aug 2011 15:24:55 -0400
Traceback Switch to copy-and-paste view
/home/dockedin/webapps/peebletalk/lib/python2.7/django/core/
handlers/base.py in get_response
response = middleware_method(request)
...
▶ Local vars
/home/dockedin/webapps/peebletalk/lib/python2.7/django/middleware/
common.py in process_request
if (not _is_valid_path(request.path_info, urlconf)
and
...
▶ Local vars
/home/dockedin/webapps/peebletalk/lib/python2.7/django/middleware/
common.py in _is_valid_path
urlresolvers.resolve(path, urlconf)
...
▶ Local vars
/home/dockedin/webapps/peebletalk/lib/python2.7/django/core/
urlresolvers.py in resolve
return get_resolver(urlconf).resolve(path)
...
▶ Local vars
/home/dockedin/webapps/peebletalk/lib/python2.7/django/core/
urlresolvers.py in resolve
def resolve(self, path):
tried = []
match = self.regex.search(path)
if match:
new_path = path[match.end():]
for pattern in self.url_patterns:
try:
sub_match = pattern.resolve(new_path)
...
except Resolver404, e:
sub_tried = e.args[0].get('tried')
if sub_tried is not None:
tried.extend([[pattern] + t for t in
sub_tried])
else:
tried.append([pattern])
According to excellent answer posted here: http://redsymbol.net/articles/django-attributeerror-str-object-no-attribute-resolve/
There are generally several sources of this error:
You missed 'pattern keyword':
urlpatterns = ('',
(r'^$', direct_to_template, {'template' : 'a.html'}),
# ...
this should be changed to:
urlpatterns = patterns('',
(r'^$', direct_to_template, {'template' : 'a.html'}),
# ...
Note that in Django 1.8+, it's better to use a list of regexes instead of patterns
.
urlpatterns = [
(r'^$', direct_to_template, {'template' : 'a.html'}),
...
]
You missed a comma in some tuple, like:
(r'^hello/$' 'views.whatever')
You commented out some url()s using triple-quotes
You carelessly leave a closing bracket in the wrong place:
(r'^(?P\d{4})/$', 'archive_year', entry_info_dict), 'coltrane_entry_archive_year',
instead of:
(r'^(?P\d{4})/$', 'archive_year', entry_info_dict, 'coltrane_entry_archive_year'),
You set ROOT_URLCONF
to be a list
When migrating from the pattern tuples to a regular list you forgot to remove the empty ''
argument of the pattern.
Please check carefully if you don't have one of this cases in your code.
For me, this caused the problem:
urlpatterns = patterns('',
url(r'^all/$', 'album.views.albums'),
"""
url(r'^create/$', 'album.views.create'),
url(r'^get/(?P<album_id>\d+)/$', 'album.views.album'),
url(r'^like/(?P<album_id>\d+)/$', 'album.views.like_album'),
"""
)
and this solved it:
urlpatterns = patterns('',
url(r'^all/$', 'album.views.albums'),
)
"""
url(r'^create/$', 'album.views.create'),
url(r'^get/(?P<album_id>\d+)/$', 'album.views.album'),
url(r'^like/(?P<album_id>\d+)/$', 'album.views.like_album'),
"""
I saw this possibility in a comment on http://redsymbol.net/articles/django-attributeerror-str-object-no-attribute-resolve/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With