我无法使用用户登录,我不知道为什么,我可以使用admin accout登录但是,我为新用户创建了一个模型,我无法使用它进行登录。
model.py
class MiUsuario(AbstractBaseUser):
email = models.EmailField(
verbose_name='Dirección de e-mail',
max_length=255,
unique=True,
)
nombre_completo = models.CharField(verbose_name="Nombre Completo del usuario(a)",max_length=150, unique= True, null=True)
nombre_de_usuario = models.CharField(verbose_name="Nombre de Usuario",max_length=15, unique= True)
Numero_de_identificacion = models.PositiveIntegerField(verbose_name="Número de identificación",null=True)
Pagina_web = models.URLField(verbose_name="Página Web",blank=True)
Celular = models.PositiveIntegerField(verbose_name="Número de celular",null=True)
Telefono = models.PositiveIntegerField(verbose_name="Número de télefono",null=True)
Ext = models.PositiveIntegerField("Extension del télefono",null=True)
Nombre_Empresa = models.CharField(verbose_name="Nombre de la empresa",max_length=50,null=True)
Cargo_Contacto = models.CharField(verbose_name="Cargo del cliente",max_length=50,null=True)
GeneroEscoger = ((1,"Sin especificar"),(2,'Masculino'),(3,'Femenino'))
Genero = models.IntegerField(verbose_name='Genero',choices=GeneroEscoger, default=1)
Ciudades = ( (1,'Bogotá'),(2,'Medellin'),(3,'Cali'),(4,'Barranquilla'),(5,'Cartagena'),(6,'Cucuta'),(7,'Ibagué'),(8,'Bucaramanga'),(9,'Otro'))
Ciudad = models.IntegerField(verbose_name='Ciudad',choices=Ciudades, default=1,)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
objects = AdministracionUsuarios()
USERNAME_FIELD = 'nombre_de_usuario'
REQUIRED_FIELDS = ['Numero_de_identificacion','Nombre_Empresa','Telefono']
def get_full_name(self):
return self.nombre_completo
def get_short_name(self):
return self.nombre_de_usuario
def _str_(self):
return self.nombre_de_usuario
def has_perm(self, perm, obj=None):
return True
def has_module_perms(self, app_label):
return True
@property
def is_staff(self):
return self.is_admin
然后我使用表格来确认MiUsuario中是否存在用户
form.py
class LoginUserForm(forms.Form):
"""Authentication form which uses boostrap CSS."""
usuario = MiUsuario()
username = forms.CharField(max_length=254,widget=forms.TextInput({'placeholder': 'Nombre de usuario'}))
password = forms.CharField(label=_("Password"),widget=forms.PasswordInput({'placeholder':'Contraseña'}))
def usuario():
if usuario.objects.filter(nombre_de_usuario!=username) and usuario.objects.filter(password!=password):
raise forms.ValidationError('Nombre de usuario o contraseña incorrecta')
在layout.html中调用表单后,但是当我尝试登录时,只需重新登录页面并且没有使用用户帐户的标志,但是如果我尝试使用管理员帐户,则无需麻烦 的 url.py
url(r'^login$', 'app.views.index', name='Vulpini.co'),
我该怎么做这个日志工作 的 views.py
def index(request):
notifi = Notificaciones.objects.filter(user=request.user.id, Estado=False)
formlog = LoginUserForm()
if request.method == 'POST':
form = RegistroUserForm(request.POST, request.FILES)
if form.is_valid():
cleaned_data = form.cleaned_data
username = cleaned_data.get('username')
password = cleaned_data.get('password')
email = cleaned_data.get('email')
user_model = MiUsuario.objects.crear_usuario(nombre_de_usuario=username,email=email, password=password)
user_model.save()
else:
form = RegistroUserForm()
else:
form = RegistroUserForm()
context = {
'formlog' : formlog,
'form': form,
'notifi': notifi,
}
return render(request,'app/index.html',context)
我的视图得到表格
答案 0 :(得分:1)
您需要使用自定义用户模型在settings.py中设置AUTH_USER_MODEL
,如:
AUTH_USER_MODEL = 'appname.MiUsuario'
更改AUTH_USER_MODEL会对数据库结构产生很大影响。它更改了可用的表,它将影响外键和多对多关系的构造。如果您打算设置AUTH_USER_MODEL,则应在创建任何迁移或首次运行manage.py migrate之前设置它。
不支持在创建表后更改此设置 通过makemigrations,将导致您必须手动修复您的 schema,从旧用户表中移植数据,并可能手动移植 重新申请一些迁移。
查看此link了解详情