Tôi đang sử dụng mô hình người dùng mặc định trong django cho khá nhiều điều và tôi nhận ra, nếu tôi cần nâng cao hơn nữa, tôi sẽ phải tạo Mô hình người dùng tùy chỉnh của riêng mình django 1.5.Trình quản lý không khả dụng; Người dùng đã được đổi chỗ cho 'pet.Person'
Tôi đã tạo mô hình người dùng tùy chỉnh của mình và tôi có chức năng cho phép người dùng đăng nhập. Tôi nghĩ rằng mô hình người dùng tùy chỉnh của tôi không tương thích với chức năng của tôi vì nó sẽ không cho phép tôi làm request.user. Làm thế nào tôi có thể sửa lỗi này để tôi có thể sử dụng request.user một lần nữa?
xem
def LoginRequest(request):
form = LoginForm(request.POST or None)
if request.user.is_authenticated():
username = User.objects.get(username=request.user)
url = reverse('world:Profile', kwargs = {'slug': person.slug})
return HttpResponseRedirect(url)
if request.POST and form.is_valid():
user = form.authenticate_user()
login(request, user)
username= User.objects.get(username=request.user)
person = Person.objects.get(user=request.user)
url = reverse('world:Profile', kwargs = {'slug': person.slug})
return HttpResponseRedirect(url)
return render(request, 'login.html',{'form': form})
mô hình
class PersonManager(BaseUserManager):
def create_user(self, email,date_of_birth, username,password=None,):
if not email:
msg = 'Users must have an email address'
raise ValueError(msg)
if not username:
msg = 'This username is not valid'
raise ValueError(msg)
if not date_of_birth:
msg = 'Please Verify Your DOB'
raise ValueError(msg)
user = self.model(
email=PersonManager.normalize_email(email),username=username,date_of_birth=date_of_birth)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self,email,username,password,date_of_birth):
user = self.create_user(email,password=password,username=username,date_of_birth=date_of_birth)
user.is_admin = True
user.is_staff = True
user.is_superuser = True
user.save(using=self._db)
return user
class Person(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(verbose_name='email address',max_length=255,unique=True,db_index=True,)
username = models.CharField(max_length=255, unique=True)
date_of_birth = models.DateField()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username', 'date_of_birth',]
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
objects = PersonManager()
def get_full_name(self):
return self.email
def get_short_name(self):
return self.email
def __unicode__(self):
return self.email
Xin chào, điều này có vẻ như nó sẽ giải quyết được vấn đề của tôi - tôi đã tự hỏi tập tin nào nên đi vào? Cảm ơn! –
@GershomMaes AUTH_USER_MODEL bên trong settings.py và mã khác trong chế độ xem của bạn hoặc bất cứ nơi nào bạn sử dụng Mô hình người dùng, Bạn được chào đón: D –
Đã làm việc, được đánh giá cao! –