#models.py: from django import forms class LoginForm(forms.Form): username = forms.CharField(max_length=100) password = forms.CharField(widget=forms.PasswordInput(render_value=False),max_length=100) #views.py: from project.courses.models import LoginForm def check_login(request): def errorHandle(error): form = LoginForm() return render_to_response('pathto/login.html', { 'error' : error, 'form' : form, }) if request.user.is_authenticated(): username = request.user.username return render_to_response('pathto/logged_in.html', { 'username': username, }) else: if request.method == 'POST': # If the form has been submitted... form = LoginForm(request.POST) # A form bound to the POST data if form.is_valid(): # All validation rules pass username = request.POST['username'] password = request.POST['password'] user = authenticate(username=username, password=password) if user is not None: if user.is_active: # Redirect to a success page. login(request, user) return render_to_response('pathto/logged_in.html', { 'username': username, }) else: # Return a 'disabled account' error message error = u'account disabled' return errorHandle(error) else: # Return an 'invalid login' error message. error = u'invalid login' return errorHandle(error) else: error = u'form is invalid' return errorHandle(error) else: form = LoginForm() # An unbound form return render_to_response('pathto/login.html', { 'form': form, }) def logout_view(request): if request.user.is_authenticated(): logout(request) form = LoginForm() return check_login(request) else: check_login(request) return HttpResponseRedirect('/') #login.html: {% if error %}

{{ error }}

{% endif %}
{{ form.as_p }}
#logged_in.html:

Welcome, {{ username }}

Logout