Django admin causando AttributeError

Estoy aprendiendo Django usando el Libro de Django. Estoy ejecutando python3.3.3 en mi Macbook Pro con Mavericks 10.9 y cuando habilito el sitio de administración obtengo “Se produjo un error en el servidor. Póngase en contacto con el administrador”. en el navegador, un objeto ” AttributeError: ‘RegexURLResolver’ no tiene ningún atributo ‘_urlconf_module’ ” error del servidor Django. He comprobado (y publicado) mis archivos settings.py y urls.py y no veo ningún problema allí …

Encontré un artículo similar en GIT aquí , pero no creo que se aplique a lo que está sucediendo conmigo. Pensé que podría ser un problema de los Mavericks, así que ejecuté todas las actualizaciones de brew y la actualización de pip para django, pero todavía estoy recibiendo este error …

¿Alguna idea a alguien?

Porta-PuterTwo:LearningDjango arana$ python3 manage.py runserver Validating models... 0 errors found December 03, 2013 - 21:42:20 Django version 1.6, using settings 'LearningDjango.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. Traceback (most recent call last): File "/usr/local/lib/python3.3/site-packages/django/core/urlresolvers.py", line 339, in urlconf_module return self._urlconf_module AttributeError: 'RegexURLResolver' object has no attribute '_urlconf_module' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.3/site-packages/django/core/handlers/base.py", line 101, in get_response resolver_match = resolver.resolve(request.path_info) File "/usr/local/lib/python3.3/site-packages/django/core/urlresolvers.py", line 318, in resolve for pattern in self.url_patterns: 

urls.py:

 from django.conf.urls import patterns, include, url from LearningDjango.views import currentDatetime from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', # Examples: url(r'^$', 'LearningDjango.views.home', name='home'), url(r'^time/$', currentDatetime), # url(r'^blog/', include('blog.urls')), # Uncomment the next line to enable the admin: # url(r'^admin/', include(admin.site.urls)), url(r'^admin/', include(admin.site.urls)), ) 

settings.py:

 """ Django settings for LearningDjango project. For more information on this file, see https://docs.djangoproject.com/en/1.6/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/1.6/ref/settings/ """ # Build paths inside the project like this: os.path.join(BASE_DIR, ...) import os BASE_DIR = os.path.dirname(os.path.dirname(__file__)) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = '#6wow&islp6!6@+$9b%j9@981k^@i_uf8^=u%7gp@0b_^j^6t9' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True TEMPLATE_DEBUG = True ALLOWED_HOSTS = [] # Application definition INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.messages', 'django.contrib.sessions', 'django.contrib.staticfiles', 'books', ) MIDDLEWARE_CLASSES = ( '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', ) ROOT_URLCONF = 'LearningDjango.urls' WSGI_APPLICATION = 'LearningDjango.wsgi.application' # Database # https://docs.djangoproject.com/en/1.6/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 'USER': '', 'PASSWORD': '', 'HOST': '', 'PORT': '', } } # Internationalization # https://docs.djangoproject.com/en/1.6/topics/i18n/ LANGUAGE_CODE = 'en-us' TIME_ZONE = 'EST' USE_I18N = True USE_L10N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.6/howto/static-files/ STATIC_URL = '/static/' TEMPLATE_DIRS = ( os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'), ) 

Me encontré con este error al intentar ejecutar un módulo de prueba que reside fuera de mi proyecto django (una práctica que django no parece admitir):

 $ tree . ├── example_project │  ├── example_app │  │  ├── __init__.py │  │  └── models.py │  ├── __init__.py │  ├── manage.py │  └── project │    ├── __init__.py │    ├── settings.py │    ├── urls.py │    └── wsgi.py └── test └── test_example_app.py 

El error fue causado por django asumiendo una ruta de importación diferente en diferentes puntos del proceso, así que lo resolví agregando a sys.path . No me atrevería a hacer esto en un entorno de producción, pero puedo aceptar algo de piratería en las pruebas.

Esto es lo que terminé en test_example_app.py :

 import os import sys import django from django.conf import settings from django.test import LiveServerTestCase from django.test.utils import get_runner class TestExampleApp(LiveServerTestCase): ... if __name__ == '__main__': sys.path.append(os.path.realpath('./example_project')) os.environ['DJANGO_SETTINGS_MODULE'] = 'example_project.project.settings' django.setup() sys.path.append(os.path.realpath('./example_project/project')) testrunner = get_runner(settings)() failures = testrunner.run_tests(['test_example_app']) sys.exit(bool(failures)) 

La solución, tan extraña como me parece, fue que había especificado la carpeta raíz como el inicio de la importación de books.models en el archivo views.py. Esto pareció no solo hacer explotar el inicio del administrador, sino que el error que dio no dio mucha, si es que alguna, indicación del problema raíz. Fue solo cuando regresé a Python 2.7 que el mensaje de error me dio alguna indicación de la raíz del problema. Supongo que se trata de cosas neófitas clásicas, ya que ahora parece obvio que la “raíz” del sitio debería ser la carpeta con manage.py, y por lo tanto no debería estar en ninguna especificación de ruta. Aunque el libro no parece afirmar que …