Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django Authentication (Custom Login Page)

Tags:

django

Im trying to write my own django login page. Eveything is ok up to the point where I try to login and I just get redirected back to the main login view.

TEMPLATE

{% extends "bdayremind-maininput.html" %}
    {% block main %}

    <form class="form-horizontal" name="LoginForm" action="/login/" method="post">
    {% csrf_token %}
    {% if next %}
        <input type="hidden" name="next" value="{{ next }}" />
    {% endif %}
    <div class="control-group">
    <label class="control-label" for="username">Username</label>
        <div class="controls">
            <input type="text" id="username" value="{{username}}" placeholder="Username">
        </div>
    </div>
    <div class="control-group">
        <label class="control-label" for="password">Password</label>
            <div class="controls">
                <input type="password" name="password" id="password" placeholder="Password">
            </div>
    </div>
    <div class="control-group">
        <div class="controls">
            <button type="submit" class="btn">Login</button>
        </div>
    </div>
    </form>
    {% endblock %}

URLS

urlpatterns = patterns('',
    url(r'^bdayremind_maininput/$', 'birthdayreminder.views.main'),
    # login / logout
    (r'^login/$', 'birthdayreminder.views.login_user'),
    #(r'^logout/$', logout_page),
)

VIEWS

import datetime
from django.http import *
from django.shortcuts import render_to_response
from django.template import RequestContext
from birthdayreminder.models import *
from django.contrib.auth.decorators import login_required
from django.contrib.auth import authenticate, login

def login_user(request):
    username = password = ''
    if request.POST:
        username = request.POST.get('username')
        password = request.POST.get('password')

        user = authenticate(username=username, password=password)
        if user is not None:
            if user.is_active:
                login(request, user)
                return HttpResponseRedirect('birthdayreminder.views.main')

    return render_to_response('login.html',{'username': username}, context_instance=RequestContext(request))



@login_required(login_url='/login/')
def main(request):
........

Any Ideas ?

like image 770
felix001 Avatar asked May 07 '13 20:05

felix001


People also ask

How do I authenticate login in Django?

from django.contrib.auth import authenticate, login def my_view(request): username = request.POST['username'] password = request.POST['password'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) # Redirect to a success page. ... else: # Return an 'invalid ...


1 Answers

You forgot to add redirect to the desired page after login.

like image 171
Yossi Avatar answered Sep 23 '22 05:09

Yossi