分别为 User
模型和 UserProfile
模型各建一个表单.
class UserForm(django.forms.ModelForm):
class Meta:
model = User
class UserProfileForm(django.forms.ModelForm):
class Meta:
model = UserProfile
exclude = ['user']
为他们增加前缀,并一起显示在相同的HTML表单元素中。 在先后保存User 和 UserProfile之前,在视图中检查并确认二者都是有效的。
def register(request):
if request.method == 'POST':
uf = UserForm(request.POST, prefix='user')
upf = UserProfileForm(request.POST, prefix='userprofile')
if uf.is_valid() * upf.is_valid():
user = uf.save()
userprofile = upf.save(commit=False)
userprofile.user = user
userprofile.save()
return django.http.HttpResponseRedirect(…something…)
else:
uf = UserForm(prefix='user')
upf = UserProfileForm(prefix='userprofile')
return django.shortcuts.render_to_response('register.html',
dict(userform=uf,
userprofileform=upf),
context_instance=django.template.RequestContext(request))
在文件 register.html
中:
<form method="POST" action="">
{% csrf_token %}
{{userform}}
{{userprofileform}}
<input type="submit">
</form>
这个方法还没试过,想用Django实现普通用户注册,登录怎么做也不知道。