in settings.py
in TEMPLATE_DIRS put all your templates folders where django go to find them
in MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
in INSTALLED_APPS = (
'django.contrib.auth',
#important to login and logout
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'YourProject.YourApp',
)
and create this
LOGIN_URL = '/url/to/login/'
LOGOUT_URL = '/url/to/logout/'
LOGIN_REDIRECT_URL = '/url/to/your/view'
in your general urls.py
from django.contrib.auth.views import login, logout_then_login
from django.conf.urls.defaults import patterns, url, include
from django.conf import settings
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^YourApp/', include('YourProject.YourApp.urls')),
(r'^login/$', login, {'template_name': 'login.djhtml'}),
(r'^logout/$', logout_then_login),
# For admin
url(r'^admin/', include(admin.site.urls)),
)
if settings.DEBUG:
urlpatterns += patterns('',
url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT,
}),
)
in YourApp/urls.py
from django.conf.urls.defaults import patterns, url
urlpatterns = patterns('YourProject.YourApp.views',
url(r'^$', 'YourViewName'),
)
need a base.djhtml in YourTemplateFolder
in YourTemplateFolder/login.djhtml
{% extends "base.djhtml" %}
{% block cuerpo %}
{% if form.errors %}
<p>Su nombre de usuario y contraseña no coinciden. Por favor intente nuevamente.</p>
{% endif %}
<form method="post" action="">
{% csrf_token %}
<label>Nombre de Usuario</label><input
id="id_username" type="text" name="username" maxlength="30" /><br
/>
<label>Clave de Usuario</label><input
type="password" name="password" id="id_password" /><br />
<input type="submit" value="login" />
<input type="hidden" name="next" value="{{ next }}" />
</form>
{% endblock %}
in your YourApp/views.py
from django.contrib.auth.decorators import login_required
from django.template.context import RequestContext
@login_required
def yourViewName(Request):
#your code here
return render_to_response('yourTemplate', {'YourDict': yourDict},
context_instance=RequestContext(Request))
I think that something like that will work, its copy of a small project mine in django 1.3.1, its admin somewher ther but you can eliminate. (in
its this code running... to see the site just go to