django:用户注册错误:没有这样的表:auth_user

 墨尔本晴上残留的余温丶_856 发布于 2023-01-04 10:20

我尝试使用Django的默认Auth来处理注册和登录.而且我觉得这个程序很标准,但我的错误.

我的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)

我的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,})

我的urls.py

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

即使我尝试删除db.sqlite3并重新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

有人可以解释并告诉我应该怎么做吗?

4 个回答
  • ./manage.py migrate
    

    如果您刚刚启用了所有中间件等,则会运行每次迁移并添加缺少的表.

    2023-01-04 10:21 回答
  • 你唯一需要做的就是:

    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.
    

    2023-01-04 10:21 回答
  • 这适用于django版本<1.7:

    使用命令初始化表

    manage.py syncdb
    

    这允许您指定"超级用户"以及初始化任何表.

    2023-01-04 10:21 回答
  • 更新

    您可能会收到此错误,因为您正在使用UserCreationFormmodelform,其中META包含User(django.contrib.auth.models> User)作为模型.

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

    在这里,您使用自己的自定义身份验证模型,因此User尚未创建与之相关的表.所以在这里你必须使用自己的自定义模型.在Meta类中,模型应该是您的User(books.User)模型

    2023-01-04 10:21 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有