我是相當新的Django,想問關於用戶身份驗證和登錄英寸我閱讀文檔,我無法找到正確的答案/方向關於我在嘗試去完成。基本上,我必須整合到一個遺留系統中,所以我不能使用默認的auth_user
表或類似的東西。我在我的應用程序定義的模型下面寫:用戶認證Django與自定義用戶模型和表
class User(models.Model):
class Meta:
db_table = 'user'
def __unicode__(self):
return self.first_name + ' ' + self.last_name
first_name = models.CharField(max_length=64)
last_name = models.CharField(max_length=64)
email = models.CharField(max_length=64)
password = models.CharField(max_length=32)
active = models.CharField(max_length=1)
last_modified = models.DateTimeField("last modified")
timestamp = models.DateTimeField("timestamp")
我的問題是,我怎麼能利用上述模式(或者我應該做哪些改變吧)與身份驗證的應用程序工作?現在我有認證以下後端按文檔:
class CustomAuth(ModelBackend):
def authenticate(**credentials):
return super(CustomAuth, self).authenticate(**credentials)
def authenticate(self, username=None, password=None):
# Check the username/password and return a User.
if username != None and password != None:
# Get the user
try:
user = User.objects.get(email=username)
if user.check_password(password):
logger.info('User is authenticated, logging user in')
return user
except User.DoesNotExist:
pass
return None
def get_user(self, user_id):
try:
return User.objects.get(id=user_id)
except User.DoesNotExist:
return None
我試圖測試按如下:
user = authenticate(username='[email protected]', password='testUser')
我不斷收到各種錯誤,如'module' object is not callable
。我還在settings.py
文件中包含了我的自定義身份驗證。有沒有我想要做的例子?任何幫助表示讚賞,謝謝!
編輯 我改變了我的模型,下面:
from django.db import models
from django.contrib.auth.models import User as AuthUser, UserManager
# Extend the base User model
class User(AuthUser):
class Meta:
db_table = 'user'
active = models.CharField(max_length=1)
last_modified = models.DateTimeField("last modified")
objects = UserManager()
你讀過[this](http://www.b-list.org/weblog/2006/jun/06/django-tips-extending-user-model/)和[this](http:// scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance/)和[this](http://stackoverflow.com/questions/44109/extending-the-user- model-with-custom-fields-in-django),基本上你擴展/關聯'默認'用戶模型,而不是自己創建。 –
你說的是從構建到框架中的'User'模型繼承?爲什麼我不想這樣做,它需要我有不同的列,我不需要/希望,因爲我正在集成到遺留數據模型中......或者我的理解是不正確的? – KVISH
我發現了一篇適合我的文章......不確定這是推薦的方式嗎? http://tomforb.es/using-a-custom-sqlalchemy-users-model-with-django – KVISH