0

我對django很陌生,我正在嘗試的概念非常簡單。 我創建了自定義模型(我不想擴展任何預定義的模型)。 使用此代碼我試圖驗證我的登錄名:讓django在我的自定義模型中尋找數據

Models.py:(我只給出了示例數據,這不是我真正使用的數據,而且我的客戶dosent希望我使用任何內置模型AbstractBaseUser等)

from django.db import models 
#from django.contrib.auth.models import User 

class logindata(models.Model): 
    fname= models.CharField(max_length=30) 
    lname = models.CharField(max_length=30) 
    uname = models.CharField(max_length=30) 
    password = models.CharField(max_length = 30) 

Views.py

def auth_view(request): 
username = request.POST.get('username','') 
password = request.POST.get('password','') 
user =auth.authenticate(uname=username, password=password) 
if user is not None:  
    auth.login(request, user) 
    return HttpResponseRedirect('/accounts/loggedin',{'user':user}) 
else: 
    return HttpResponseRedirect('/accounts/invalid') 

def loggedin(request): 
    return render_to_response('loggedin.html', 
           {'name':request.user.uname}) 

我的問題很簡單。我想驗證看看我的自定義模型(logindata),而不是默認的模型。 我該怎麼做?

+1

爲什麼你的客戶dosent想讓你使用像AbstractBaseUser這樣的內建模型? –

+0

我試圖與客戶交談,我不知道爲什麼...他劑量想要它.. 他告訴任何你設計設計它定製... 而且這是第一個項目在Django所以不知道如何進行。 – seshan

+0

@ S.Ramaseshan那麼爲什麼要在第一個地方使用框架?從頭開始編寫一個定製框架。如果您使用的是框架,那隱含地意味着您正在重用代碼。客戶無視他/她自己使用Django的決定。 –

回答

1

如果要創建自定義用戶模型,Django會提供一個可以擴展和使用的django.contrib.auth.models.AbstractBaseUser模型。 Django文檔有專門的一節,take a look

如果您對Django的用戶模型完全滿意,並且您只想添加一些其他配置文件信息,您可以簡單地子類別django.contrib.auth.models.AbstractUser並添加您的自定義配置文件字段。該類提供了作爲抽象模型的默認User的完整實現。

您可以通過code at github查看要擴展的內容。

+0

忘記登錄...說我想驗證其他定義的定製...我將如何繼續... – seshan

+0

@ S.Ramaseshan如果它是一個模型領域,你可以使用一個表單進行驗證。 –

+0

@ S.Ramaseshan對'authenticate()'使用你的模型,你的模型必須和AbstractBaseUser相同,因爲它需要在抽象模型中定義的屬性和方法。你不能跳過它。 –