Django Authentication Login ничего не возвращает

Решение для меня было использовать git difftool.

Я написал этот инструмент https://github.com/chestozo/dmp на основе https: / /code.google.com/p/google-diff-match-patch/.

Иногда это также дает лучший diff по сравнению с git diff --color-words=.:)

0
задан Ahtisham 18 January 2019 в 06:43
поделиться

2 ответа

Думаю, проблема в твоей регистрации. Вы неправильно храните пароль в представлении signup.

userdetails = CustomUser(firstname=firstname,lastname=lastname,email=email,password=password, areacode=areacode, number=number)  # <-- Here
userdetails.save()

Поскольку вы не храните пароль должным образом (в настоящее время он хранится в виде обычного текста, а не хешированного), поэтому функция authenticate не может получить пользователя.

Итак, вам нужно установить пароль следующим образом:

userdetails = CustomUser(firstname=firstname,lastname=lastname,email=email, areacode=areacode, number=number)
userdetails.set_password(password)
userdetails.save()

Для более подробной информации, пожалуйста, проверьте здесь функцию set_password .

0
ответ дан ruddra 18 January 2019 в 06:43
поделиться

Вам необходимо расширить модель пользователя Django следующим образом:

Models.py

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver

#this will extend User model with your own model
class CustomUser(models.Model):
      user = models.OneToOneField(User, on_delete=models.CASCADE)
      # all the other fields you mentioned except areacode and number
      # are already in User model so don't need to add them here
      areacode = models.CharField(max_length=4)
      number = models.CharField(max_length=30)

# Below code will hook the create_custom_user and save_custom_user methods
# to the User model, whenever a save event occurs

@receiver(post_save, sender=User)
def create_custom_user(sender, instance, created, **kwargs):
    if created:
       CustomeUser.objects.create(user=instance)   

@receiver(post_save, sender=User):
def save_custom_user(sender, instance, **kwargs):
    instance.customeuser.save()

Теперь вы можете создать пользователя с помощью CustomModel в выглядит так:

Views.py

from django.contrib.auth.models import User

def signup(request):
   if request.method == "POST":
      # I would suggest to use django forms 
      # instead of getting the values directly from request.POST  
      user = User(firstname=firstname, lastname=lastname, email=email)
      user.customuser.areacode = areacode
      user.customuser.number = number
      user.set_password(password)
      user.save()
      # rest of the code

doc для форм в django

Также для входа в систему пользователь с электронной почтой вместо имени пользователя вам нужно написать аутентификационный бэкэнд для этого и зарегистрировать его в вашем settings.py взглянуть здесь

0
ответ дан Ahtisham 18 January 2019 в 06:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: