Security¶
Create a new user¶
from django.contrib.auth.models import User
user = User.objects.create_user('bart', 'bart@simpsons.com', 'eatmyshorts')
User profile¶
member/models.py
class UserProfile(models.Model):
user = models.OneToOneField(User)
language = models.CharField(max_length=2, default=settings.LANGUAGE_CODE)
def user_registered_handler(sender, **kwargs):
user = kwargs.get('user')
language = kwargs.get("language")
if not language:
language = settings.LANGUAGE_CODE
if user:
profile, created = UserProfile.objects.get_or_create(user=user)
profile.language = language
profile.save()
user_registered_signal.connect(user_registered_handler)
Register profile in settings
AUTH_PROFILE_MODULE = "member.UserProfile"
Edit user profile in admin¶
member/admin.py
class UserProfileInline(admin.StackedInline):
model = UserProfile
max_num = 1
can_delete = False
class UserAdmin(AuthUserAdmin):
inlines = [UserProfileInline]
# unregister old user admin
admin.site.unregister(User)
# register new user admin
admin.site.register(User, UserAdmin)
Custom Login¶
urls.py
from django.contrib.auth.views import login, logout
url(r'member/login/$', login, name="login"),
url(r'member/logout/$', logout, {"template_name": "mymodule/logout.html"}, name="logout"),
settings.py
LOGIN_REDIRECT_URL = "/secure"
LOGOUT_REDIRECT_URL="/"