用户注册错误:没有这样的表:auth_user [英] User Registration with error: no such table: auth_user
问题描述
我正在尝试使用 Django 的默认身份验证来处理注册和登录.
I am trying to use Django's default Auth to handle register and log in.
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
但我仍然收到此错误消息:
I tried deleting the db.sqlite3
file and re-ran python manage.py syncdb
but I still get this error message:
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
推荐答案
更新
您收到此错误可能是因为您使用的是 UserCreationForm
模型表单,其中在 META
中它包含 User
(django.contrib.auth.models > User) 作为模型.
Update
You are probably getting this error because you are using UserCreationForm
modelform, in which in META
it contains User
(django.contrib.auth.models > User) as model.
class Meta:
model = User
fields = ("username",)
这里您使用的是您自己的自定义身份验证模型,因此尚未创建与 User
相关的表.所以在这里你必须使用你自己的自定义模型表单.在元类中,模型应该是你的 User
(books.User) 模型
And here you are using your own custom auth model, so tables related to User
has not been created. So here you have to use your own custom modelform. where in Meta class, model should be your User
(books.User) model
这篇关于用户注册错误:没有这样的表:auth_user的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!