以下在shell中工作正常:
>>> from django.contrib.auth.models import User
>>> user=User.objects.get(pk=1)
>>> user.first_name = u'Some'
>>> user.last_name = u'Name'
>>> user.save()
>>> user.first_name
u'Some'
>>> user.last_name
u'Name'
Run Code Online (Sandbox Code Playgroud)
然后我尝试对表单做同样的事情:
# forms.py
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ['first_name', 'last_name']
# views.py
def edit_names(request, template_name="registration/edit_names.html"):
if request.method == "POST":
form = UserForm(data=request.POST)
if form.is_valid():
user = form.save(commit=False)
user.save()
url = urlresolvers.reverse('my_account')
return HttpResponseRedirect(url)
else:
form = UserForm(instance=request.user)
page_title = _('Edit user names')
return render_to_response(template_name, locals(),
context_instance=RequestContext(request))
# edit_names.html
<form action="." method="post">{% csrf_token …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中我有AUTH_PROFILE_MODULE设置users.UserProfile.此UserProfile有一个函数create,当新用户注册时,应该调用该函数,然后创建UserProfile条目.
根据django-registration文档,所有需要做的是profile_callback在我的urls.py中设置条目.我看起来像这样:
url(r'^register/$', register, {'form_class': RecaptchaRegistrationForm,
'profile_callback': UserProfile.objects.create,
'backend': 'registration.backends.default.DefaultBackend',},
name='registration_register')
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
异常值:register()得到一个意外的关键字参数'profile_callback'
那么我必须把它放在哪里才能使它工作?