Я подклассифицирован из класса django User
, чтобы создать свою собственную персонализированную версию. Класс User
, о котором я могу говорить, это django.contrib.auth.models.User
.Аутентификация пользователей, которые наследуются от класса пользователя django или django.contrib.auth.models.User
Это то, что он выглядит следующим образом:
from django.db import models
from django.contrib.auth.models import User as Auth_User
class User(Auth_User):
# User data
Age = models.IntegerField(blank=False, default=0)
middle_name = models.CharField(blank=True, max_length=255)
# Properties
@property
def full_name(self):
return str(self.first_name + ' ' + (self.middle_name + ' ' if self.middle_name else '') + self.last_name)
# Overridden functions
def __unicode__(self):
return self.full_name
Пожалуйста, не то, что это упрощенная версия модели, имеется больше данных, что на самом деле не имеет отношения к этому вопросу.
Теперь, когда я пытаюсь для проверки подлинности с помощью обычных средств, его не удается:
def login(request):
if request.method == 'GET':
return render(request, "User/login.html")
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
new_user = authenticate(username=username, password=password)
if new_user is not None:
if new_user.is_active:
login(request, new_user)
else:
print "User is not alive, he/she died! :("
return HttpResponseRedirect('/users/')
HTML, нет ничего особенного:
{% extends 'layout.html' %}
{% block content %}
<form action="https://stackoverflow.com/users/login" method="post">
{% csrf_token %}
<label for="username">
Username:
<input type="text" name="username" id="username"/>
</label>
<label for="password">
Password:
<input type="password" name="password" id="password"/>
</label>
<input type="submit" value="Submit"/>
</form>
{% endblock %}
Итак, как же я аутентифицировать мой User
класс, подклассы из класса пользователя django?
Вы пытались установить [AUTH_USER_MODEL] (https://docs.djangoproject.com/en/1.5/ref/settings/#auth-user-model) настройку? – alecxe
@alecxe: Нет, у меня еще нет. Тем не менее, я участвую в этом процессе. –
, когда вы говорите, что это терпит неудачу, 'authenticate' возвращает' None'? – karthikr