django: Регистрация пользователя с ошибкой: нет такой таблицы: auth_user

Я пытаюсь использовать Django по умолчанию Auth для обработки регистра и входа в систему. И я думаю, что процедура довольно стандартная, но моя с ошибкой.

my setting.py:

INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', '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', ) AUTH_USER_MODEL = 'books.User' 

мои books.models.py:

 class User(AbstractUser): account_balance = models.DecimalField(max_digits=5, decimal_places=2, default=0) 

my views.py:

 from django.contrib.auth.forms import UserCreationForm def register(request): if request.method == 'POST': form = UserCreationForm(request.POST) if form.is_valid(): new_user = form.save() return HttpResponseRedirect("/accounts/profile/") else: form = UserCreationForm() return render(request, "registration/register.html", {'form': form,}) 

my urls.py

 urlpatterns = patterns('', (r'^accounts/login/$', login), (r'^accounts/logout/$', logout), (r'^accounts/profile/$', profile), (r'^accounts/register/$', register), ) 

Даже я попытался удалить db.sqlite3 и re python manage.py syncdb , все равно это сообщение об ошибке:

 OperationalError at /accounts/register/ no such table: auth_user Request Method: POST Request URL: http://127.0.0.1:8000/accounts/register/ Django Version: 1.7b4 Exception Type: OperationalError Exception Value: no such table: auth_user 

Может кто-нибудь объяснить и сказать мне, что я должен делать?

  • Django: объект WSGIRequest не имеет атрибута «пользователь» на некоторых страницах?
  • Почему не assertRaises ловить мою ошибку атрибута с помощью python unittest?
  • Как вы можете работать с PyPy, Django и PostgreSQL?
  • Python: отладка утечки памяти
  • django.db.utils.OperationalError: не удалось подключиться к серверу: нет такого файла или каталога
  • В чем разница между использованием {{STATIC_URL}} и {% static%}
  • 8 Solutions collect form web for “django: Регистрация пользователя с ошибкой: нет такой таблицы: auth_user”

    Обновить

    Вероятно, вы получаете эту ошибку, потому что используете UserCreationForm modelform, в которой в META содержится модель User (django.contrib.auth.models> User).

     class Meta: model = User fields = ("username",) 

    И здесь вы используете свою собственную пользовательскую модель auth, поэтому таблицы, связанные с User , не были созданы. Таким образом, здесь вы должны использовать свою собственную модель модели. где в классе Meta модель должна быть вашей моделью User (books.User)

     ./manage.py migrate 

    Если вы только что включили все посредники и т. Д., Это приведет к каждой миграции и добавит недостающие таблицы.

    Это кажется очень элементарным, но вы инициализировали таблицы командой

     manage.py syncdb 

    Это позволяет вам назначать «суперпользователя», а также инициализировать любые таблицы.

    Единственное, что вам нужно сделать, это:

     python manage.py migrate 

    и после этого:

     python manage.py createsuperuser 

    после этого вы можете выбрать имя пользователя и пароль.

    Вот пример вывода:

     Username (leave blank to use 'hp'): admin Email address: xyz@gmail.com Password: Password (again): Superuser created successfully. 

    Если вы используете пользовательскую модель auth, в вашем подклассе UserCreationForm вам придется переопределить метод metaclass и clean_username, поскольку он ссылается на жесткий код пользователя (последний только до django 1.8).

     class Meta(UserCreationForm.Meta): model = get_user_model() def clean_username(self): username = self.cleaned_data['username'] try: self.Meta.model.objects.get(username=username) except self.Meta.model.DoesNotExist: return username raise forms.ValidationError( self.error_messages['duplicate_username'], code='duplicate_username', ) 

    Я также столкнулся с такой же проблемой: «Нет такой таблицы: auth_user», когда я пытался развернуть один из моих сайтов Django в виртуальной среде.

    Вот мое решение, которое работало в моем случае:

    В файле settings.py, где вы определили настройки своей базы данных следующим образом:

     DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(os.getcwd(), 'db.sqlite3'), } } 

    просто найдите свою базу данных db.sqlite3 или любую другую базу данных, которую вы используете, и запишите полный путь к базе данных, поэтому теперь настройка базы данных будет выглядеть примерно так:

     DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': '/home/django/django_project/db.sqlite3', } } 

    Я надеюсь, что ваша проблема будет решена.

    Перед созданием пользовательской модели необходимо выполнить первую миграцию. Затем установите приложение вашей модели пользователя и добавьте AUTH_USER_MODEL.

    Также:

     class UserForm(UserCreationForm): class Meta: model = User fields = ("username",) 

    а также

     python manage.py migrate auth python manage.py migrate 

    python manage.py makemigrations затем → python manage.py migrate исправляет его.

    Предполагая, что приложения, установленные / установленные в settings.py, существуют в каталоге проекта.

    Python - лучший язык программирования в мире.