django-从前端添加新用户

django- adding new user from the frontend

我已经学习 django 大约 1 个月了,我觉得最好的方法是做一个项目。我选择了一个简单的学校管理项目,但我有点不知所措。该项目有不同类别的用户,即学生和管理员。学校管理员应该登录并添加新学生,学生也应该登录并可以编辑他们的个人资料。我创建了另一个应用程序 UserProfile,其中 User 作为 foreignKey 和 category

class Category(models.Model):
    name=models.CharField(max_length=200)
    def __unicode__(self):
        return self.name

class UserProfile(models.Model):
    user=models.OneToOneField(User)
    category=models.ForeignKey(Category)

def __unicode__(self):
    return "%s "%(self.category.name)

我从管理站点添加了示例用户,到目前为止,我能够将学校管理员重定向到他应该添加新学生的前端仪表板。学生在登录时也会被重定向到学生页面。我有一个通用的登录表单。 我的第一个问题是,我应该像下面这样在学生模型中将用户作为外键吗?

class Student(models.Model):
    user=models.OneToOneField(User)
    regNum=models.CharField(max_length=200, unique=True)
    lastName=models.CharField(max_length=200)
    otherNames=models.CharField(max_length=200)
    dateOfBirth=models.DateField()
    idNo=models.IntegerField(default=123456)
    email=models.EmailField()
    contact=models.IntegerField(default=071234567)
    HomeTown=models.CharField(max_length=200)
  1. 我如何处理添加新学生,以便管理员能够添加学生详细信息,包括学生登录密码,同时为学生分配类别。请注意,这是 django 中的新功能。谢谢

您需要创建一个 User 实例并将其与学生详细信息一起添加到学生。

如此处所述:

https://docs.djangoproject.com/en/1.8/ref/contrib/auth/#django.contrib.auth.models.UserManager.create_user

这里: Creating users django 1.8

示例:

from django.contrib.auth.models import User
#place this after your form is valid 
form=StudentForm(request.POST)
if form.is_valid():
     #create student
     username=form.cleaned_data['username']
     email=form.cleaned_data['email']
     password=form.cleaned_data['password']
     user=User.objects.create_user(username=username,email=email,password=password)
     #create your userprofile here
     ............
     ............
     #using the user instance now create your student
     student=Student.objects.create(user=user,regNum=''......)
     .............
..............