Адрес электронной почты принадлежит модели пользователя, поэтому нет необходимости использовать профили, чтобы пользователи могли обновлять свою электронную почту. Создайте модель формы из пользовательской модели, которая имеет только электронную почту в качестве поля, затем предоставьте эту форму в своем представлении и обработайте ее. Что-то вроде:
class UserInfoForm(forms.ModelForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ('email',)
def my_view(request):
if request.POST:
user_form = UserInfoForm(request.POST, instance=request.user)
if user_form.is_valid():
user_form.save()
return HttpResponseRedirect(reverse('form_success_screen'))
else:
user_form = UserInfoForm()
return render_to_response('my-template.html', {'user_form': user_form}, context_instance=RequestContext(request))
Обратите внимание, что если форма успешна, я возвращаю HttpResponseRedirect, чтобы отправить пользователя на другую страницу. В этом случае я ищу названный URL из моего файла URL.