首页 > 解决方案 > 我无法使用除超级用户之外的其他帐户登录 django 应用程序

问题描述

我是 Django 的新手。我有一个项目,我无法使用除超级用户帐户之外的其他帐户登录。这是我的模型

class School(models.Model):
    school = models.CharField(max_length=100, null=False, blank=False,default='school')

class User(AbstractUser):
    schools = models.ForeignKey(School, on_delete=models.PROTECT, null=False, blank=False,default=1)
    is_student = models.BooleanField(default=False)
    is_teacher = models.BooleanField(default=False)


class Teacher(models.Model):
    school = models.ForeignKey(School, on_delete=models.PROTECT, null=False, blank=False)
    name  = models.CharField(max_length=30, blank=False, null=False)
    code = models.CharField(max_length=30, blank=False, null=False)


class Student(models.Model):
    school = models.ForeignKey(School, on_delete=models.PROTECT, null=False, blank=False)
    first_name  = models.CharField(max_length=30, blank=False, null=False)
    last_name = models.CharField(max_length=30, blank=False, null=False)
    adm = models.CharField(max_length=30, blank=False, null=False)

我是 Django 和自学新手。请那里的任何人帮助我。问题可能出在哪里??

我的登录视图。

def Login(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']

        user = auth.authenticate(username=username,password=password)
        if user is not None:
            auth.login(request, user)
            if username.endswith("@teacher"):
                return redirect('home')
            else:
                return redirect('students')
            #return redirect('home')
        else:
            messages.info(request,'Invalid Credentials')
            return redirect('login')

    else:
        return render(request, 'login2.html')

    return redirect('teachers')

用户创建表格

class TeacherSignUpForm(UserCreationForm):
    class Meta(UserCreationForm.Meta):
        model = User

    def save(self, commit=True):
        user = super().save(commit=False)
        user.is_teacher = True
        if commit:
            user.save()
            school = School.objects.create(user=user)
        return user
class StudentSignUpForm(UserCreationForm):
    class Meta(UserCreationForm.Meta):
        model = User

    @transaction.atomic
    def save(self):
        user = super().save(commit=False)
        user.is_student = True
        user.save()
        student = Student.objects.create(user=user)
        #student.interests.add(*self.cleaned_data.get('interests'))
        return user

标签: pythondjangomultiple-users

解决方案


推荐阅读