Django 预填表格
django pre filled form
我希望表单数据在第一次渲染时预填,初始参数完全不影响表单。
当用户编辑个人资料时,我希望用户数据显示在表单中。
def profile_update(request):
if request.method == 'POST':
form = UpdateProfile(
initial={'username': 'Hi there!'}, instance=request.user)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('profile'))
else:
form = UpdateProfile()
return render(request, 'users/profile_update.html', {'form': form})
class UpdateProfile(forms.ModelForm):
email = forms.EmailField()
img = forms.ImageField(label='img', required=False)
class Meta:
model = TbUser
fields = ['username', 'img', 'email', 'cellphone', 'empno', 'real_name', 'nfc_id',
'sex', 'role', 'department']
如果是 GET 请求,您需要将 initial
传递给表单:
from django.shortcuts import redirect
def profile_update(request):
if request.method == 'POST':
form = UpdateProfile(<b>request.POST, request.FILES</b>, instance=request.user)
if form.is_valid():
form.save()
return redirect('profile')
else:
form = UpdateProfile(<b>initial={'username': 'Hi there!'}</b>)
return render(request, 'users/profile_update.html', {'form': form})
我希望表单数据在第一次渲染时预填,初始参数完全不影响表单。 当用户编辑个人资料时,我希望用户数据显示在表单中。
def profile_update(request):
if request.method == 'POST':
form = UpdateProfile(
initial={'username': 'Hi there!'}, instance=request.user)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('profile'))
else:
form = UpdateProfile()
return render(request, 'users/profile_update.html', {'form': form})
class UpdateProfile(forms.ModelForm):
email = forms.EmailField()
img = forms.ImageField(label='img', required=False)
class Meta:
model = TbUser
fields = ['username', 'img', 'email', 'cellphone', 'empno', 'real_name', 'nfc_id',
'sex', 'role', 'department']
如果是 GET 请求,您需要将 initial
传递给表单:
from django.shortcuts import redirect
def profile_update(request):
if request.method == 'POST':
form = UpdateProfile(<b>request.POST, request.FILES</b>, instance=request.user)
if form.is_valid():
form.save()
return redirect('profile')
else:
form = UpdateProfile(<b>initial={'username': 'Hi there!'}</b>)
return render(request, 'users/profile_update.html', {'form': form})