英文:
New users on Django app at heroku doesn't persist on database
问题
We started a project on Heroku, using Django, but users aren't persisted on the Django User table in our database, but as Admin users in Django?
我们在Heroku上开始了一个项目,使用Django,但是用户在我们的数据库中没有被保存在Django用户表中,而是作为Django中的管理员用户?
We use User.objects.create_user() from django.contrib.auth.models.User
我们使用来自django.contrib.auth.models.User的User.objects.create_user()。
Database is MySQL
数据库是MySQL
Any tips?
有什么建议吗?
英文:
We started a project on Heroku, using Django, but users aren't persisted on Django User table on our database, but as Admin users at Django?
We use User.objects.create_user() from django.contrib.auth.models.User
Database is MySQL
Any tips?
Update 1 (2023-04-04)
Some code snippets
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())
答案1
得分: -1
你正在使用 django-on-heroku
。
这个库默认情况下会使用你的 DATABASE_URL
环境变量中的值来覆盖数据库连接参数,很可能你手动设置的MySQL参数不会被使用。
你可以通过向 django_on_heroku.settings()
传递关键字参数来禁用功能,例如:
django_on_heroku.settings(locals(), databases=False)
这将阻止 django_on_heroku
修改你的 settings.DATABASES
。
我建议你还要检查一下你设置的配置变量和插件。如果你在支付 Heroku Postgres 或其他不需要的数据库插件,你可能会想要移除它。
英文:
You are using django-on-heroku
.
One of the things this library does out of the box is to override your datbabase connection parameters with whatever is in your DATABASE_URL
environment variable. It is very likely that the MySQL parameters that you have set manually are not being used.
You can disable features by passing keyword arguments to django_on_heroku.settings()
, e.g.:
django_on_heroku.settings(locals(), databases=False)
That should prevent django_on_heroku
from modifying your settings.DATABASES
.
I suggest you also review the config vars and addons that you have set. If you're paying for Heroku Postgres, or some other database addon that you don't need, you'll probably want to remove it.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论