def editProfile(request): if request.user.is_authenticated(): form =UserProfileForm(request.POST, request.FILES) if form.is_valid(): cleaned_data = form.clean() #extract form info (could potentially use .serialize() to remove redundant code) first_name = cleaned_data['first_name'].strip() last_name = cleaned_data['last_name'].strip() email = cleaned_data['emailAddress'] dorm = cleaned_data['dorm'] pic = request.FILES.get('pic','') #update user fields user = User.objects.get(username = request.user) userdata = user.userdata user.first_name = first_name user.last_name = last_name user.email = email userdata.dorm = dorm if pic: userdata.pic = pic #save results user.save() userdata.save() #resubmit user data to pre-fill form data = {'first_name':user.first_name, 'last_name':user.last_name, 'emailAddress':user.email, 'dorm':userdata.dorm} form = UserProfileForm(initial=data) return render(request, 'editProfile.html', {'form':form}) else: #if a form error occurs user = request.user userdata = user.userdata #re-render the form - the html page will handle the error display data = {'first_name':user.first_name, 'last_name':user.last_name, 'emailAddress':user.email, 'dorm':userdata.dorm} form = UserProfileForm(initial = data) return render(request, 'editProfile.html', {'form':form}) else: return HttpResponseRedirect('/login')