Я пытаюсь зарегистрировать пользователя в django, расширяя модуль auth
. Я читал отсюда и там, и теперь я повсюду и не знаю, что делаю. Изначально я хотел сделать, это зарегистрировать пользователя с информацией именем, электронной почты, мобильный и пароль. с мобильный не по умолчанию django auth
Я пытался расширить auth
.Расширение модели пользователя в django
вот код.
models.py
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
class CustomerUserProfile(models.Model):
mobile = models.CharField(max_length = 20)
user = models.ForeignKey(User, unique=True)
def __str__(self):
return "%s's profile" % self.user
def create_user_profile(sender, instance, created, **kwargs):
if created:
profile, created = CustomerUserProfile.objects.get_or_create(user=instance)
post_save.connect(create_user_profile, sender=User)
forms.py
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from neededform.models import CustomerUserProfile
class CustomerRegistrationForm(UserCreationForm):
email = forms.EmailField(required = True)
mobile = forms.CharField(max_length = 20)
class Meta:
model = User
fields = ('username','email','mobile','password1','password2')
views.py
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.template import RequestContext
from django.core.context_processors import csrf
from neededform.forms import CustomerRegistrationForm
from neededform.models import CustomerUserProfile
from django.contrib.auth.models import User
def register(request):
if request.method == 'POST':
form = CustomerRegistrationForm(request.POST)
if form.is_valid():
f = form.save()
return HttpResponseRedirect('/registered/')
else:
args = {}
args.update(csrf(request))
args['form'] = CustomerRegistrationForm()
return render_to_response('User_Registration.html', args ,context_instance = RequestContext(request))
Этот код при выполнении делает запись в auth_user
табла e и запись в CustomerUserProfile
, но мобильный coloumn всегда пуст.
Что еще я могу добавить в код?
PS. пожалуйста, может кто-нибудь объяснить мне, что этот код делает
def create_user_profile(sender, instance, created, **kwargs):
if created:
profile, created = CustomerUserProfile.objects.get_or_create(user=instance)
post_save.connect(create_user_profile, sender=User)
как я скопировал откуда-то я хочу знать, как это работает на самом деле.
спасибо.
Django довольно подробно рассказывает о том, как расширить модель пользователя, поддерживая основные поля и добавляя некоторые дополнительные или полностью переопределяя всю модель пользователя: https://docs.djangoproject.com/en/1.6/topics/auth/customizing/# extend-the-existing-user-model – petkostas
Не могли бы вы рассказать мне, что я делаю неправильно, а не петь песню в похвалу Django. Я новичок и не имею слишком много идей о том, что я делаю на самом деле. – Stark
в примере показывает, как получить данные, и я хочу их сохранить. – Stark