django注册用户

来源:互联网 发布:永续债发行条件 知乎 编辑:程序博客网 时间:2024/04/29 05:54
[u][/u][code=Python][/code]models.py:
class UserProfile(models.Model):
#用户姓名
user = models.ForeignKey(User,related_name="profile")
#用户昵称
usermail = models.EmailField()
#用户头像
photo = models.ImageField(upload_to="media/%Y/%m/%d",blank=True,null=True) #用户性别
GENDER_CHOICES =(
(u'M',u'Male'),
(u'F',u'Female'),
)
gender = models.CharField(max_length=2,choices=GENDER_CHOICES)
#用户个性签名
signature = models.TextField(max_length=100)
#用户tag
#tag = models.ManyToManyField(Tag)
#用户居住地
#location = models.CharField(max_length=50)
#生日
birthday = models.DateField(null=True,max_length=20)
def __unicode__(self):
return "%s" %(self.user)



forms.py:
个人资料form的定义
class UserProfileForm(forms.ModelForm):
GENDER_CHOICES =(
(u'M',u'Male'),
(u'F',u'Female'),
)
gender = forms.ChoiceField(label=u'性别',choices=GENDER_CHOICES,
widget=forms.RadioSelect())
birthday = forms.DateField(required=True,widget=SelectDateWidget(years=range(1920,2030)),label='生日')
signature = forms.CharField(label=u'个性签名',widget=forms.Textarea({'size':10000}))
photo = forms.ImageField(label=u'上传你喜欢的头像')
class Meta:
model = UserProfile
exclude = ['user','usermail',]



views.py:
创建资料
@csrf_exempt
@login_required
def create_profile(request): 
form = UserProfileForm(request.POST,request.FILES)
  if request.method == 'POST' and form.is_valid():
  info = UserProfile.objects.create(
  gender = form.cleaned_data['gender'],
  birthday = form.cleaned_data['birthday'],
  signature = form.cleaned_data['signature'],
  photo = form.cleaned_data['photo'],
  user = request.user,
  )
 
  info.save()
  return HttpResponseRedirect('/')

个人资料显示:
@login_required  
def myprofile(request,public_profile_field=None,
template_name='myprofile.html',extra_context=None):

try:
profile_obj = request.user.get_profile()
except ObjectDoesNotExist:
return HttpResponseRedirect('/accounts/create_profile')
if public_profile_field is not None and not getattr(profile_obj,public_profile_field):
profile_obj = None
if extra_context is None:
extra_context = {}
context = RequestContext(request)
for key,value in extra_context.items():
context[key] = callable(value) and value() or value
return render_to_response(template_name,{'profile':profile_obj},
context_instance=context)
0 0
原创粉丝点击