数据库错误,没有这样的表:django中的auth_user

时间:2013-12-18 09:58:41

标签: django

我想在我的django网站上使用userena。第一次使用userena。

我创建了应用程序,即“帐户”,供用户登录和唱歌,我的models.py是

from django.db import models
from django.contrib.auth.models import User
from django.utils.translation import ugettext as _
from userena.models import UserenaBaseProfile

class MyProfile(UserenaBaseProfile):
user = models.OneToOneField(User,
                            unique=True,
                            verbose_name=_('user'),
                            related_name='my_profile')
favourite_snack = models.CharField(_('favourite snack'),
                                   max_length=5)

我的settings.py是

# Django settings for photostock project.

DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS = (
# ('Your Name', 'your_email@example.com'),
  )

MANAGERS = ADMINS
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'software1@finder-lbs.com'
EMAIL_HOST_PASSWORD = 'f1d3r!@#'

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
    'NAME': 'photo',                      # Or path to database file if using sqlite3.
    # The following settings are not used with sqlite3:
    'USER': '',
    'PASSWORD': '',
    'HOST': '',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
    'PORT': '',                      # Set to empty string for default.
}
}
  AUTHENTICATION_BACKENDS = (
                   'userena.backends.UserenaAuthenticationBackend',
                   'guardian.backends.ObjectPermissionBackend',
                   'django.contrib.auth.backends.ModelBackend',
              )
  #AUTH_USER_MODEL = "login.PropaUser"

  # Hosts/domain names that are valid for this site; required if DEBUG is False
  # See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts
  ALLOWED_HOSTS = []

  # Local time zone for this installation. Choices can be found here:
  # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
  # although not all choices may be available on all operating systems.
  # In a Windows environment this must be set to your system time zone.
  TIME_ZONE = 'America/Chicago'

  # Language code for this installation. All choices can be found here:
  # http://www.i18nguy.com/unicode/language-identifiers.html
  LANGUAGE_CODE = 'en-us'

  SITE_ID = 1

  # If you set this to False, Django will make some optimizations so as not
  # to load the internationalization machinery.
  USE_I18N = True

  # If you set this to False, Django will not format dates, numbers and
  # calendars according to the current locale.
  USE_L10N = True

  # If you set this to False, Django will not use timezone-aware datetimes.
  USE_TZ = True

  # Absolute filesystem path to the directory that will hold user-uploaded files.
  # Example: "/var/www/example.com/media/"
  MEDIA_ROOT = ''

 # URL that handles the media served from MEDIA_ROOT. Make sure to use a
 # trailing slash.
 # Examples: "http://example.com/media/", "http://media.example.com/"
 MEDIA_URL = ''

 # Absolute path to the directory static files should be collected to.
 # Don't put anything in this directory yourself; store your static files
 # in apps' "static/" subdirectories and in STATICFILES_DIRS.
 # Example: "/var/www/example.com/static/"
 STATIC_ROOT = ''

 # URL prefix for static files.
 # Example: "http://example.com/static/", "http://static.example.com/"
 STATIC_URL = '/static/'

 # Additional locations of static files
 STATICFILES_DIRS = (
 # Put strings here, like "/home/html/static" or "C:/www/django/static".
 # Always use forward slashes, even on Windows.
 # Don't forget to use absolute paths, not relative paths.
 )

 # List of finder classes that know how to find static files in
 # various locations.
 STATICFILES_FINDERS = (
        'django.contrib.staticfiles.finders.FileSystemFinder',
        'django.contrib.staticfiles.finders.AppDirectoriesFinder',
 #           'django.contrib.staticfiles.finders.DefaultStorageFinder',
 )

 # Make this unique, and don't share it with anybody.
 SECRET_KEY = 'tr!)ra#+%miw(qo^ot)v8@i+$2+4o9io=7p6w3hd=i$3m2!tkr'

 # List of callables that know how to import templates from various sources.
 TEMPLATE_LOADERS = (
      'django.template.loaders.filesystem.Loader',
      'django.template.loaders.app_directories.Loader',
 #         'django.template.loaders.eggs.Loader',
 )

 MIDDLEWARE_CLASSES = (
        'django.middleware.common.CommonMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        # Uncomment the next line for simple clickjacking protection:
        # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 )

 ROOT_URLCONF = 'photostock.urls'

 # Python dotted path to the WSGI application used by Django's runserver.
 WSGI_APPLICATION = 'photostock.wsgi.application'

 TEMPLATE_DIRS = (
         # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
         # Always use forward slashes, even on Windows.
         # Don't forget to use absolute paths, not relative paths.
 )

 INSTALLED_APPS = (
       'django.contrib.auth',
       'django.contrib.contenttypes',
       'django.contrib.sessions',
       'django.contrib.sites',
       'django.contrib.messages',
       'django.contrib.staticfiles',
       # Uncomment the next line to enable the admin:
       # 'django.contrib.admin',
       # Uncomment the next line to enable admin documentation:
       # 'django.contrib.admindocs',
       'userena',
       'guardian',
       'easy_thumbnails',
       'accounts',
  )
  ANONYMOUS_USER_ID = -1
  AUTH_PROFILE_MODULE = 'accounts.MyProfile'  

 LOGIN_REDIRECT_URL = '/accounts/%(username)s/'  
 LOGIN_URL = '/accounts/signin/'  
 LOGOUT_URL = '/accounts/signout/'  

 SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer'

 # A sample logging configuration. The only tangible logging
 # performed by this configuration is to send an email to
 # the site admins on every HTTP 500 error when DEBUG=False.
 # See http://docs.djangoproject.com/en/dev/topics/logging for
 # more details on how to customize your logging configuration.
 LOGGING = {
     'version': 1,
     'disable_existing_loggers': False,
     'filters': {
         'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
            }
     },
 'handlers': {
    'mail_admins': {
        'level': 'ERROR',
        'filters': ['require_debug_false'],
        'class': 'django.utils.log.AdminEmailHandler'
    }
 },
 'loggers': {
    'django.request': {
        'handlers': ['mail_admins'],
        'level': 'ERROR',
        'propagate': True,
    },
 }
}

我已经使用userena在我的网站中显示了唱歌和注册页面。验证工作正常但是当我尝试注册时,填写所有必填字段并按下提交按钮,它显示错误,是

 DatabaseError at /accounts/signin/

 no such table: auth_user

 Request Method:    POST
 Request URL:   http://localhost:8000/accounts/signin/
 Django Version:    1.5.5
 Exception Type:    DatabaseError
 Exception Value:   no such table: auth_user

提到,我没有对我的项目models.py文件进行任何更改。虽然这是一个数据库错误,它与我的项目models.py ??有任何关联吗? 还有什么可以做的吗?

我必须提一下,如果你有任何解决方案或暗示解决这个问题,我真的是一个与userena.so合作的人,请帮助我。

3 个答案:

答案 0 :(得分:1)

正如@Aswin Murugesh指出的那样,你应该检查你的数据库并确保创建表。如果您运行./manage.py syncdb但仍然收到此错误,我建议您安装SQLite浏览器(如SQLiteman(http://sqliteman.yarpen.cz/ sudo apt-get install sqliteman)并打开SQLite文件并检查数据库。这将告诉您数据库是否正常工作。

通常在使用SQLite时,您可以备份数据库,然后从头开始并获取所有新表。通过ocally开发,运行像SQLite这样的单文件数据库,如果你处于绑定状态,它就不那么难以破坏数据库并重新开始。

你总是可以创建一个新的virtualenv并开始一个新的Django项目(如果你真的被卡住了)并让Userena也这样工作。

答案 1 :(得分:1)

添加settings.py:

AUTH_PROFILE_MODULE = 'accounts.MyProfile'

答案 2 :(得分:0)

在创建自定义用户模型之前,必须先执行第一次迁移。然后安装用户模型的应用程序并添加AUTH_USER_MODEL

https://stackoverflow.com/a/41628647/6472582