Попытка перенаправить на другую страницу на основе учетных данных, указанных в DJango - PullRequest
1 голос
/ 08 апреля 2020

Я хочу перенаправить на разные страницы на основе учетных данных для входа в django.

Например: есть два имени для входа

Если я войду с учетными данными X, тогда я буду быть перенаправлены на X-страницу. Находясь на той же самой странице входа в систему, если я войду с учетными данными Y, я буду перенаправлен на соответствующую страницу Y.

Я пытался поместить условие в файл user_login views.py, но это выдает мне следующую ошибку.

Exception Type: NoReverseMatch
Exception Value:    
Reverse for 'companyDashboard.html' not found. 'companyDashboard.html' is not a valid view function or pattern name.

Мой файл views.py

from django.shortcuts import render
from django.template import RequestContext
from wfhApp.forms import UserForm
from django.contrib.auth import authenticate, login, logout
from django.http import HttpResponseRedirect, HttpResponse
from django.urls import reverse
from django.contrib.auth.decorators import login_required



# Create your views here.

@login_required
def company_dashboard(request):
    return render(request, 'wfhApp/company_dashboard.html')



@login_required
def companyDashboard(request):
    return render(request, 'wfhApp/companyDashboard.html')



@login_required
def user_logout(request):
    logout(request)
    return HttpResponseRedirect(reverse('index'))



def user_login(request):

    if request.method == 'POST':

        username = request.POST.get('username')
        password = request.POST.get('password')

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

        if user:

            if user.is_active:

                if user.username == 'prashant':
                    login(request, user)
                    return HttpResponseRedirect(reverse('company_dashboard.html'))

                elif user.username == 'saurabh':
                    login(request, user)
                    return HttpResponseRedirect(reverse('companyDashboard.html'))

                else:
                    return HttpResponse("Account Not Exists")

            else:
                return HttpResponse("Account Not Active")

        else:
            print("Someone tried to login and failed")
            print("Username: {} and Password: {}".format(username, password))
            return HttpResponse("Invalid Login Details")

    else:
        return render(request, 'wfhApp/login.html')

Спасибо за Ваше время и внимание.

1 Ответ

0 голосов
/ 08 апреля 2020

Извлечение urlresolvers docs , чтобы использовать reverse, вы должны установить name в пути (urls.py). Не добавляйте .html расширение, используйте установленное имя в urls.py.

from news import views

path('archive/', views.archive, name='news-archive')

Используйте установленное имя.

# using the named URL
reverse('news-archive')

# passing a callable object
# (This is discouraged because you can't reverse namespaced views this way.)
from news import views
reverse(views.archive)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...