我们在Heroku上开始了一个项目,使用Django,但是用户不是保存在我们数据库的Django User表中,而是作为Django的Admin用户。
我们使用django.contrib.auth.models.User
中的User.objects.create_user()数据库为MySQL
提示吗?
更新1 (2023-04-04)
一些代码片段
views.py
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.models import User
...code...
def insertUser(request):
...code...
# Username validation
if User.objects.filter(username=request.POST['name']).exists():
data['msg'] = 'Usuário já cadastrado!'
data['class'] = 'alert-danger'
return render(request, 'cadUser.html', data)
# Email validation
if User.objects.filter(email=request.POST['email']).exists():
data['msg'] = 'Email já cadastrado!'
data['class'] = 'alert-danger'
return render(request, 'cadUser.html', data)
# Validação de Registro funcional
# New user recording
user = User.objects.create_user(request.POST['name'], request.POST['email'], request.POST['password'])
Docente.reg_funcional = request.POST['reg_funcional']
#user.reg_funcional = request.POST['reg_funcional']
user.save()
data['msg'] = 'Usuário cadastrado com sucesso!'
data['class'] = 'alert-success'
return render(request, 'loginUser.html', data)
settings.py
from pathlib import Path
import django_on_heroku
...settings...
INSTALLED_APPS = [
<our stuff>,
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_simple_cookie_consent',
]
...settings...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
<connection stuff>
}
}
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
...settings...
django_on_heroku.settings(locals())
您正在使用django-on-heroku
。
这个库开箱即用的一件事是用DATABASE_URL
环境变量中的任何内容覆盖数据库连接参数。很有可能你手动设置的MySQL参数没有被使用。
您可以通过向django_on_heroku.settings()
传递关键字参数来禁用功能,例如:
django_on_heroku.settings(locals(), databases=False)
这应该防止django_on_heroku
修改你的settings.DATABASES
。
我建议你也检查你已经设置的配置变量和插件。如果你正在为Heroku Postgres或其他一些你不需要的数据库插件付费,你可能会想要删除它。