用户修改个人资料的常见视图views.py
from django.shortcuts import render, get_object_or_404
from django.contrib.auth.models import User
from .forms import ProfileForm
from django.http import HttpResponseRedirect
from django.urls import reverse
def profile_update(request, pk):
user = get_object_or_404(User, pk=pk)
if request.method == "POST":
form = ProfileForm(request.POST)
if form.is_valid():
user.first_name = form.cleaned_data['first_name']
user.last_name = form.cleaned_data['last_name']
user.save()
return HttpResponseRedirect(reverse('users:profile', args=[user.id]))
else:
default_data = {'first_name': user.first_name, 'last_name': user.last_name,
}
form = ProfileForm(default_data)
return render(request, 'users/profile_update.html', {'form': form, 'user': user})
① 我们先从url获取user的主键pk(id), 利用get_object_or_404方法获取需要修改个人资料的用户对象user。
② 当用户通过POST方法提交个人资料修改表单,我们利用is_valid()方法先验证表单ProfileForm的数据是否有效。如果有效,我们将更新过的first_name和last_name数据存入user对象。更新成功返回个人信息页。
③ 如果用户没有提交表单或不是通过POST方法提交表单,我们先获取现有数据生成default_data,利用ProfileForm显示。
网友评论