프로젝트 등록 페이지를 설정하려고합니다. 내가Django에서 사용자 정의 사용자 등록
class CustomUser(models.Model):
middleschool = 'MS'
highschool = 'HS'
university = 'U'
blank = '-'
male = 'M'
female = 'F'
school_choices = ((middleschool, 'Middle School'), (highschool, 'High school'), (university, 'University'), (blank, 'Not defined'),)
sex = ((male, 'Male'), (female, 'Female'), (blank, 'Not defined'),)
user = models.ForeignKey(User, unique=True)
school = models.CharField(max_length = 30, choices = school_choices, default = blank, blank=True, null=True)
birthdate = models.DateField(blank=True, null=True)
sex = models.CharField(max_length = 1, choices = sex, default = blank, blank=True, null=True)
city = models.CharField(max_length = 30, blank=True, null=True)
payment_info = models.BigIntegerField(max_length = 30, blank=True, null=True)
rating = models.DecimalField(max_digits=2, decimal_places=0, default = 0)
premiumstatus = models.BooleanField(default = False, blank=False, null=False)
Django 1.5
및 Python 2.7
을 사용하고 및 here을 발견로 create_user
방법을 추가 : 나는 몇 가지 옵션 필드를 추가 사용자 정의 사용자 클래스를 만들었습니다.
def registration(request):
if request.method == 'POST':
form = Registration(request.POST)
if form.is_valid():
cd =form.cleaned_data
fuser = cd['username']
fpassword = cd['password']
femail = cd['email']
fname = cd['name']
fsurname = cd['surname']
fschool = cd['school']
fbday = cd['birthdate']
fsex = cd['sex']
fcity = cd['city']
user = User.objects.create_user(fuser, fpassword, femail)
user.is_active = True
user.save()
return HttpResponseRedirect("/home/")
else:
form = Registration()
return render(request, "registration.html", {'form': form})
상대 형태 :
def create_user(sender, instance, created, **kwargs):
if created:
CustomUser.objects.create(user=instance)
post_save.connect(create_user, sender=User)
이 상대적이다 : 이 모델의 방법입니다 지금
class Registration(forms.Form):
middleschool = 'MS'
highschool = 'HS'
university = 'U'
blank = '-'
male = 'M'
female = 'F'
school_choices = ((middleschool, 'Middle School'), (highschool, 'High school'), (university, 'University'), (blank, 'Not defined'),)
sex = ((male, 'Male'), (female, 'Female'), (blank, 'Not defined'),)
username = forms.CharField(label = 'Username')
password = forms.CharField(label = 'Password', widget=forms.PasswordInput)
repassword = forms.CharField(label = ' Reinstert password', widget=forms.PasswordInput)
email = forms.EmailField()
name = forms.CharField(label = 'Name', required=False)
surname = forms.CharField(label = 'Surname', required=False)
school = forms.ChoiceField(choices = school_choices, required=False, label='What school are you enrolled?')
birthdate = forms.DateField(label = 'Birth date', required=False)
sex = forms.ChoiceField(choices = sex, required=False, label='Sex')
city = forms.CharField(label = 'City', required=False)
def clean_repassword(self):
repassword = self.cleaned_data['repassword']
password = self.cleaned_data['password']
if repassword != password:
raise forms.ValidationError("Verification password different from original password!")
widgets = {
'password': forms.PasswordInput(),
}
이 문제는 기본적으로 두 가지 : 난 아직 초보자 그래서 내가 이해가 안돼 create_user
어떻게 작동하는지, 나는 그 방법의 인수로 fname
과 fsurname
을 전달하려고했지만 그럴 게 4 가지 주장 만 받아 들인다는 사실을 알게됩니다. 내가 추가하려고하면 둘째, 명령 어떤 optionl 정보는 링크에 보여 주었다 :
user.get_profil().sex = fsex
가 어떤 오류가 발생 나던하지만 중 하나가 작동하지 않습니다. .
장고의 버전을 사용하고 있습니까? –
죄송합니다, 편집하겠습니다. – Higure
Django1.5를 사용하여 사용자 정의 사용자를 만들지 않은 이유는 무엇입니까? https : //docs.djangoproject.com/en/dev/topics/auth/customizing/#a-full-example –