Django DoesNotExist - соответствующего запроса не существует - PullRequest
0 голосов
/ 16 ноября 2018

Я работаю над проектами Django (1.4) и Python (2.7), в которых у меня есть пользовательская модель для входа пользователя в систему.

Вот моя модель: из models.py:

class User_table(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    address = models.CharField(max_length=300)
    phone = models.CharField(max_length=20, null=True)
    emailid = models.EmailField()
    user_name = models.CharField(max_length=100)
    password = models.TextField()
    user_type = models.CharField(max_length=20)
    # True means drive is available for delivery
    status = models.BooleanField(default=True)
    vehicle_no = models.CharField(max_length=50, blank=True, null=True)
    gender = models.CharField(max_length=10)
    profile = models.ForeignKey(AddedFile, on_delete=models.CASCADE, null=True, related_name='profile')
    uploaded_document = models.ForeignKey(AddedFile, on_delete=models.CASCADE, null=True, related_name='document')
    approval_status = models.BooleanField(default=False)
    login_try = models.IntegerField(default=0)
    is_active = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return str(self.id)

А вот мое мнение: Из views.py:

def mainlogin(request):
    if request.method == "POST":
        username = request.POST['username']
        email = request.POST['email']
        password = request.POST['password']
        try:
            obj = User_table.objects.get(user_name=username, emailid=email)
        verify_password = ''
        try:
            verify_password = handler.verify(password, obj.password)
        except Exception as e:
            print(e)
        if verify_password is True:
            request.session['user_id'] = obj.id
            request.session['user_type'] = obj.user_type
            user_name = obj.first_name + ' ' + obj.last_name
            request.session['user_name'] = user_name
            if not obj.approval_status:
                return HttpResponse('Your account is not confirmed by administration.')
            obj.is_active = True
            obj.login_try = 0
            obj.save()
            return redirect(home)
        else:
            try:
                obj = User_table.objects.get(user_name=username, emailid=email);
                if obj:
                    s = obj.login_try
                    s = s + 1
                    obj.login_try = int(s)

                    if int(obj.login_try) >= 3:
                        obj.login_try = 3
                    obj.save()
                    if int(obj.login_try) == 3:
                        id = obj.id
                        key = get_random_string(length=10)
                        reset_link = 'It seems you forgot password or someone is trying to login you account. This is your password reset link please do not share this with other ' + settings.EMAIL_URL + 'reset_password/' + str(
                            id) + ' key is : ' + str(key)
                        send_mail('Reset link', reset_link, settings.EMAIL_HOST_USER, [obj.emailid, ])
                        obj.password = str(key)
                        obj.save()
                        return HttpResponse(
                            'It seems you forgot password or someone is trying to login you account.  Password Reset link has been sent to your email id')
            except Exception as e:
                print(e)
                pass
            return redirect(mainlogin)
    except Exception as e:
        print('error is  : ', e)
        return HttpResponse('An error has occurred.')
if request.method == "GET":
    try:
        return render(request, "login.html")
    except Exception as e:
        print(e)

Когда я пытаюсь войти, он возвращает ошибку:

(u'error is: ', DoesNotExist (' Запрос на сопоставление пользовательской таблицы не существует. ',))

Я посмотрел в базу данных и подтвердил, что яесть запись, которую я пытаюсь получить из представления, но она все еще из-за этой ошибки.

Что здесь может быть не так?

Помогите мне, пожалуйста!

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

если вы хотите получить единственную конкретную запись, вы можете использовать ярлык Django get_object_or_404() Если у вас нет конкретной записи в базе данных, Django выдаст исключение 404. Если вы хотите больше узнать эту тему введите описание ссылки здесь

0 голосов
/ 16 ноября 2018

Контрольный список: 1 не уверен, что этот вид экспресс поддерживается, я обычно использую someModel.objects.filter(id="asdf").filter(email="qwe@gmail.com")

2 нет записей

Вы уверены, что можете что-то сопоставить, официальный документ говорит:

get () вызывает исключение DoesNotExist, если объект не был найден для данные параметры. Это исключение является атрибутом модели учебный класс. Пример:

Официальный документ Django

надежда может помочь

...