Django 表单未显示正确的字段
Django form isn't showing the correct fields
让用户更改信息字段的 django 表单应该让他们更改用户名、电子邮件、姓名和 last_name,但它会显示他们的国籍、性别、应用程序分数和生日。
views.py
def profileedit_view(request):
if request.method== 'POST':
form= PerfilEditadoForm(request.POST, instance = request.user)
if form.is_valid():
form.save()
return redirect('login')
else:
form= PerfilEditadoForm(instance=request.user)
args= {'form': form}
return render(request, 'profileedit', args)
form = UsuarioForm(request.POST or None)
if form.is_valid():
form.save()
context = {
'form': form
}
return render(request, "profileedit.html", context)
forms.py
class PerfilEditadoForm(UserChangeForm):
class Meta:
model = User
fields= ('email', 'username', 'first_name', 'last_name')
profileedit.py
<form method="POST" action="#"> {% csrf_token %}
<p>
{{ form.as_ul }}
<button class="btn btn-primary py-1 px-2" type="submit" > Save </button>
</p>
</form>
在forms.py
更改括号 - 使用 [] 而不是 ()
class PerfilEditadoForm(UserChangeForm):
class Meta:
model = User
fields= ['email', 'username', 'first_name', 'last_name']
您的表单正在被 form = UsuarioForm(request.POST or None)
覆盖。假设您要显示的字段属于 PerfilEditadoForm,您应该将该行更改为 form = PerfilEditadoForm(request.POST or None)
.
我的建议是将该特定行移动到 if request.method== 'POST':
之前。像
def profileedit_view(request):
form= PerfilEditadoForm(request.POST or None)
if request.method== 'POST':
form.instance = request.user
if form.is_valid():
form.save()
return redirect('login')
else:
form= PerfilEditadoForm(instance=request.user)
args= {'form': form}
return render(request, 'profileedit', args)
context = {
'form': form
}
return render(request, "profileedit.html", context)
让用户更改信息字段的 django 表单应该让他们更改用户名、电子邮件、姓名和 last_name,但它会显示他们的国籍、性别、应用程序分数和生日。
views.py
def profileedit_view(request):
if request.method== 'POST':
form= PerfilEditadoForm(request.POST, instance = request.user)
if form.is_valid():
form.save()
return redirect('login')
else:
form= PerfilEditadoForm(instance=request.user)
args= {'form': form}
return render(request, 'profileedit', args)
form = UsuarioForm(request.POST or None)
if form.is_valid():
form.save()
context = {
'form': form
}
return render(request, "profileedit.html", context)
forms.py
class PerfilEditadoForm(UserChangeForm):
class Meta:
model = User
fields= ('email', 'username', 'first_name', 'last_name')
profileedit.py
<form method="POST" action="#"> {% csrf_token %}
<p>
{{ form.as_ul }}
<button class="btn btn-primary py-1 px-2" type="submit" > Save </button>
</p>
</form>
在forms.py 更改括号 - 使用 [] 而不是 ()
class PerfilEditadoForm(UserChangeForm):
class Meta:
model = User
fields= ['email', 'username', 'first_name', 'last_name']
您的表单正在被 form = UsuarioForm(request.POST or None)
覆盖。假设您要显示的字段属于 PerfilEditadoForm,您应该将该行更改为 form = PerfilEditadoForm(request.POST or None)
.
我的建议是将该特定行移动到 if request.method== 'POST':
之前。像
def profileedit_view(request):
form= PerfilEditadoForm(request.POST or None)
if request.method== 'POST':
form.instance = request.user
if form.is_valid():
form.save()
return redirect('login')
else:
form= PerfilEditadoForm(instance=request.user)
args= {'form': form}
return render(request, 'profileedit', args)
context = {
'form': form
}
return render(request, "profileedit.html", context)