def edit_profile(request): # If it's a HTTP POST, we're interested in processing form data. if request.method == 'POST': # Attempt to grab information from the raw form information. # Note that we make use of both UserForm and UserProfileForm. user = request.user profile = None query_set = UserProfile.objects.filter(user=user) if not query_set.exists(): profile = UserProfile() profile.user = user profile.save() else: profile = query_set[0] if 'username' in request.POST and request.POST.get('username'): if User.objects.filter(username=str(request.POST.get('username'))).exists(): error_messages = ['Username "' + str(request.POST.get('username')) + '" is already taken.'] return view_profile(request, request.user.id, error_messages=error_messages) user.username = request.POST.get('username') if 'password' in request.POST and request.POST.get('password'): user.set_password(request.POST.get('password')) if 'first_name' in request.POST and request.POST.get('first_name'): user.first_name = request.POST.get('first_name') if 'last_name' in request.POST and request.POST.get('last_name'): user.last_name = request.POST.get('last_name') if 'email' in request.POST and request.POST.get('email'): user.email = request.POST.get('email') user.save() if 'picture-clear' in request.POST: profile.picture.delete(save=False) elif 'picture' in request.FILES: profile.picture = request.FILES['picture'] if 'website' in request.POST and request.POST.get('website'): profile.website = request.POST.get('website') profile.save() return HttpResponseRedirect('/users/'+str(user.id)) # Not a HTTP POST, this should never happen else: return view_profile(request, request.user.id, error_messages=['An error occurred while editing profile.'])