Сам не определен? - PullRequest
       5

Сам не определен?

0 голосов
/ 02 октября 2019

У меня есть вид входа в систему, который проверяет, являются ли пользователи входа клиентом или пилотом, и перенаправляет их соответствующим образом, но я продолжаю получать ошибку «Не определено». Любая помощь будет оценена.

views.py

def signin (request):
 if request.method == 'POST':
    username = request.POST['username']
    password = request.POST['password']

    user = auth.authenticate(username=username, password=password)

    if user is not None:
        auth.login(request,user)
        messages.success(request, 'You are now logged in')
        if user.role == 'client':
            def ef (self):
                return redirect(reverse('dashboard', kwargs={"pk": self.pk}))
        else:
            return redirect(reverse('pilot_dashboard', kwargs={"pk": self.pk}))
    else:
        messages.error(request, 'Invalid Credentials')
        return redirect ('login')

 else:
    return render (request, 'accounts/signin.html')

Ответы [ 3 ]

2 голосов
/ 02 октября 2019

В вашем коде есть следующее:

    if user.role == 'client':
        def ef (self):
            return redirect(reverse('dashboard', kwargs={"pk": self.pk}))
    else:
        return redirect(reverse('pilot_dashboard', kwargs={"pk": self.pk}))

def ef (self) не требуется и также не работает таким образом. Просто удалите его.

Более того, вы используете self.pk, что там невозможно. Если вы хотите получить доступ к пользователям pk, просто используйте user.pk, поскольку ваш пользователь сохраняется в переменной user, а не self.

0 голосов
/ 02 октября 2019

Надеюсь, что следующее изменение решит вашу проблему.

def signin (request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']

        user = auth.authenticate(username=username, password=password)

        if user is not None:
            auth.login(request,user)
            messages.success(request, 'You are now logged in')
            if user.role == 'client':
                return redirect(reverse('dashboard', kwargs={"pk": user.pk}))
            else:
                return redirect(reverse('pilot_dashboard', kwargs={"pk": user.pk}))
        else:
            messages.error(request, 'Invalid Credentials')
            return redirect ('login')

    else:
        return render (request, 'accounts/signin.html')

Основная проблема заключалась в том, что здесь нет экземпляра self. это пользователь, я думаю.

0 голосов
/ 02 октября 2019

Вам не нужна конструкция:

def ef (self):

На самом деле, вам не нужно возвращать функцию, вы должны вернуть перенаправление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...