¿Por qué django se queja de que aún no he puesto mi MOTOR?

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 'NAME': 'djangobb', # Or path to database file if using sqlite3. 'USER': 'root', # Not used with sqlite3. 'PASSWORD': 'root', # Not used with sqlite3. 'HOST': '', # Set to empty string for localhost. Not used with sqlite3. 'PORT': '', # Set to empty string for default. Not used with sqlite3. } } 

¿Algunas ideas? No puedo ejecutar el comando syncdb con manage.py:

  Environment: Request Method: GET Request URL: http://localhost:8000/admin/ Django Version: 1.2.1 Python Version: 2.5.4 Installed Applications: ['django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.sitemaps', 'django.contrib.admin', 'django.contrib.admindocs', 'registration', 'django_authopenid', 'djangobb_forum', 'djapian', 'messages'] Installed Middleware: ('django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.csrf.middleware.CsrfMiddleware', 'django_authopenid.middleware.OpenIDMiddleware', 'django.middleware.cache.FetchFromCacheMiddleware', 'django.middleware.transaction.TransactionMiddleware', 'djangobb_forum.middleware.LastLoginMiddleware', 'djangobb_forum.middleware.UsersOnline') Traceback: File "C:\Python25\Lib\site-packages\django\core\handlers\base.py" in get_response 80. response = middleware_method(request) File "C:\Python25\Lib\site-packages\django\middleware\locale.py" in process_request 16. language = translation.get_language_from_request(request) File "C:\Python25\Lib\site-packages\django\utils\translation\__init__.py" in get_language_from_request 90. return real_get_language_from_request(request) File "C:\PYTHON25\lib\site-packages\django\utils\functional.py" in _curried 55. return _curried_func(*(args+moreargs), **dict(kwargs, **morekwargs)) File "C:\Python25\Lib\site-packages\django\utils\translation\__init__.py" in delayed_loader 36. return getattr(trans, real_name)(*args, **kwargs) File "C:\Python25\Lib\site-packages\django\utils\translation\trans_real.py" in get_language_from_request 339. lang_code = request.session.get('django_language', None) File "C:\Python25\Lib\site-packages\django\contrib\sessions\backends\base.py" in get 63. return self._session.get(key, default) File "C:\Python25\Lib\site-packages\django\contrib\sessions\backends\base.py" in _get_session 172. self._session_cache = self.load() File "C:\Python25\Lib\site-packages\django\contrib\sessions\backends\db.py" in load 20. expire_date__gt=datetime.datetime.now() File "C:\Python25\lib\site-packages\django\db\models\manager.py" in get 132. return self.get_query_set().get(*args, **kwargs) File "C:\Python25\Lib\site-packages\django\db\models\query.py" in get 336. num = len(clone) File "C:\Python25\Lib\site-packages\django\db\models\query.py" in __len__ 81. self._result_cache = list(self.iterator()) File "C:\Python25\Lib\site-packages\django\db\models\query.py" in iterator 269. for row in compiler.results_iter(): File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in results_iter 672. for rows in self.execute_sql(MULTI): File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in execute_sql 717. sql, params = self.as_sql() File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in as_sql 56. out_cols = self.get_columns(with_col_aliases) File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in get_columns 185. col_aliases) File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in get_default_columns 273. r = '%s.%s' % (qn(alias), qn2(field.column)) File "C:\Python25\Lib\site-packages\django\db\models\sql\compiler.py" in quote_name_unless_alias 43. r = self.connection.ops.quote_name(name) File "C:\Python25\lib\site-packages\django\db\backends\dummy\base.py" in complain 15. raise ImproperlyConfigured("You haven't set the database ENGINE setting yet.") Exception Type: ImproperlyConfigured at /admin/ Exception Value: You haven't set the database ENGINE setting yet. 

Establecí el mío a la antigua y a la nueva, para que no sea específico de la versión de django:

 DATABASE_ENGINE = 'django.db.backends.sqlite3' DATABASE_NAME = '/path/to/db/foo.sqlite3' DATABASE_USER = '' DATABASE_PASSWORD = '' DATABASE_HOST = '' DATABASE_PORT = '' DATABASES = { 'default': { 'ENGINE': DATABASE_ENGINE, 'NAME': DATABASE_NAME, 'USER': DATABASE_USER, 'PASSWORD': DATABASE_PASSWORD, 'HOST': DATABASE_HOST, 'PORT': DATABASE_PORT, } } 

Pero sí, me gustaría comprobar que su instalación es la versión que piensa.

ACTUALIZAR:

Puede estar intentando importar algo de la configuración en un módulo de administración e importando el módulo de administración en la configuración. A veces las importaciones circulares dan lugar a lo anterior.

En particular, el uso de reversa (“url-name”) dentro de la configuración puede causar esto, porque termina obligando a que mire la tabla de “sitio” en algún nivel profundo-oscuro …

ACTUALIZACIÓN2:

Lo siento, para explicar lo anterior:

  • Una importación circular es cuando un módulo A importa del módulo B, y en algún nivel, el módulo B también necesita material del módulo A. En algún momento durante ese segundo nivel de profundidad, generalmente falla de alguna manera inescrutable.
  • Reverse () es la función para convertir el nombre de una url (el nombre = “foo” en urls.py) de nuevo en la url en sí. Esto hace llamadas que no siempre son posibles en configuraciones o módulos de administración.

ACTUALIZACIÓN3:

Mirando el boleto djangobb.org/ticket/81 que mencionó, para desglosar algunos de los términos, el token csrf es una etiqueta de plantilla que se utiliza para agregar la protección de falsificación de solicitudes de sitios cruzados:

http://docs.djangoproject.com/en/dev/ref/contrib/csrf/

Generalmente se ve así, para grep de un proyecto mío:

 # grep -ri csrf . ./registration/login.html: 
{% csrf_token %}

La parte sobre el troncal de djapian, aunque no sé qué djapian soy yo, generalmente significa una instalación directa del troncal (normalmente svn) – o “la versión más actualizada, verificada, que es más reciente que cualquier versión , y posiblemente probada, versión oficial “. Normalmente, esto implica hacer algo como un svn checkout http://wherever.com/someproject/trunk/ ./someproject y luego ir a ese directorio para instalar.