najmath
najmath

Reputation: 261

page not found is showing (django)

My homepage is login page.So first it will goto the home function and if not logged in it will goto login_user function then after logging in it will redirected to home.But page not found is showing.Here is my code.

views.py:

def login_user(request):
    if request.method == "POST":
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username=username, password=password)
        if user is not None:
            if user.is_active:
                login(request, user)
                return redirect('/')
            else:
                return render(request, 'retest/login.html', {'error_message': 'Your account has been disabled'})
    else:
        return render(request, 'retest/login.html', {'error_message': 'Invalid login'})
    return render(request, 'retest/login.html')

@login_required
def home(request):
    user = request.user
    if user.groups.filter(name='hod').exists():
         return render(request, 'retest/hod.html', {})
    elif user.groups.filter(name='principal').exists():
         return render(request, 'retest/principal.html', {})
    elif user.groups.filter(name='Rep').exists():
         return render(request, 'retest/home.html', {})
    elif user.groups.filter(name='Ajithzen').exists():
         return render(request, 'event/ajithzen.html', {})
    elif user.groups.filter(name='graphics').exists():
         return render(request, 'event/ashok.html', {}) 
    elif user.groups.filter(name='Event_incharge').exists():
         return render(request, 'event/chair.html', {})
    elif user.groups.filter(name='IEEE').exists():
         return render(request, 'event/ieee.html', {})
    else:
         return redirect('/login')

urls.py

url(r'login^$', views.login_user, name='login_user'),
url(r'^$', views.home, name='home'),

Page not found(404)

Request Method: GET

Request URL: http://127.0.0.1:8000/accounts/login/?next=/

Upvotes: 1

Views: 435

Answers (2)

Misster Hao
Misster Hao

Reputation: 92

In default, @login_required will redirect the unauthenticated user to settings.LOGIN_URL.
settings.LOGIN_URL set as /accounts/login as default. See the documentation.

Therefore, your login url is /login, then you need to set the LOGIN_URL in setting.py file.

Add this line in the end of setting.py

LOGIN_URL = "/login"

Also, you may want to have a look at the LOGIN_REDIRECT_URL attribute.

Upvotes: 0

itzMEonTV
itzMEonTV

Reputation: 20369

Do this instead of login^$

^login$

Upvotes: 2

Related Questions