代码之家  ›  专栏  ›  技术社区  ›  Brian D

为什么django抱怨我还没有设置引擎?

  •  1
  • Brian D  · 技术社区  · 14 年前
    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.
        }
    }
    

    有什么想法吗?无法使用manage.py运行syncdb命令:

        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.
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   eruciform    14 年前

    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,
      }
    }
    

    更新:

    您可能正在尝试从管理模块中的设置导入某些内容,并在设置中导入管理模块。有时循环进口会导致上述情况。

    更新2:

    对不起,请解释一下:

    • 循环导入是指当模块A从模块B导入时,在某种程度上,模块B也需要从模块A导入内容。在第二个深度的某个时刻,它通常以某种难以理解的方式失败。

    更新3:

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

    从我的一个项目来看,一般是这样的:

    # grep -ri csrf .
      ./registration/login.html:  <form method="post" action="{% url django.contrib.auth.views.login %}">{% csrf_token %}
    

    svn checkout http://wherever.com/someproject/trunk/ ./someproject 然后转到那个目录安装。