Background Image
Table of Contents Table of Contents
Previous Page  275 / 478 Next Page
Information
Show Menu
Previous Page 275 / 478 Next Page
Page Background

def

is_active

(

self

):

return

True

That’s what I call a minimal user model! One field, none of this firstname/lastname/

username nonsense, and, pointedly, no password! Somebody else’s problem! But, again,

you can see that this code isn’t ready for production, from the commented-out lines to

the hardcoded harry email address.

At this point I’d recommend a little browse through the

Django auth documentation

.

Aside from that, you need a model manager for the user:

accounts/models.py (ch15l006).

from

django.contrib.auth.models

import

AbstractBaseUser

,

BaseUserManager

,

PermissionsMixin

class

ListUserManager

(

BaseUserManager

):

def

create_user

(

self

,

email

):

ListUser

.

objects

.

create

(

email

=

email

)

def

create_superuser

(

self

,

email

,

password

):

self

.

create_user

(

email

)

A logout view:

accounts/views.py (ch15l007).

from

django.contrib.auth

import

login

as

auth_login

,

logout

as

auth_logout

[

...

]

def

logout

(

request

):

auth_logout

(

request

)

return

redirect

(

'/'

)

Some URLs for our two views:

superlists/urls.py (ch15l008).

urlpatterns

=

patterns

(

''

,

url

(

r'^$'

,

'lists.views.home_page'

,

name

=

'home'

),

url

(

r'^lists/'

,

include

(

'lists.urls'

)),

url

(

r'^accounts/'

,

include

(

'accounts.urls'

)),

# url(r'^admin/', include(admin.site.urls)),

)

and

accounts/urls.py.

from

django.conf.urls

import

patterns

,

url

urlpatterns

=

patterns

(

''

,

url

(

r'^login$'

,

'accounts.views.login'

,

name

=

'login'

),

url

(

r'^logout$'

,

'accounts.views.logout'

,

name

=

'logout'

),

)

Exploratory Coding, aka “Spiking”

|

247