python - 我正在尝试更新 django 中默认用户的电子邮件
问题描述
我正在尝试使用模型表单更新默认用户模型电子邮件,但我在视图中搞砸了一些东西。如何将电子邮件更改为表单中的输入。
这是我的看法
@login_required(login_url='home:login')
def ChangeEmailView(request):
if request.method == 'POST':
form = EmailChangingForm(request.POST)
if form.is_valid():
emailvalue = User.objects.get(pk=request.user.id)
form = EmailChangingForm(instance=emailvalue)
return redirect('home:profilesettings')
else:
form = EmailChangingForm()
context = {'form': form}
return render(request, 'home/email_settings.html', context)
解决方案
这是您如何处理视图以从 ModelForm 更新数据库对象:
@login_required(login_url='home:login')
def ChangeEmailView(request):
context = {}
if request.method == 'POST':
form = EmailChangingForm(request.POST)
if form.is_valid():
# Retrieve the user
user = User.objects.get(pk=request.user.id)
# Update the user email
user.email = form.cleaned_data['email']
# Save the updated user
user.save()
# Redirect to profile
return redirect('home:profilesettings')
else:
# It is a GET request
userInstance = User.objects.get(pk=request.user.id)
form = EmailChangingForm(instance=userInstance)
context = {'form': form}
return render(request, 'home/email_settings.html', context)
推荐阅读
- java - com.android.tools.r8.errors.CompilationError:程序类型已经存在:androidx.versionedparcelable.NonParcelField
- java - Spring @EnableRetry 抛出 InternalAutoProxyCreator
- python - Python 中的 REST API 包装器
- css - CSS - transform: scale() 与元素大小无关
- python - 如何使用python知道复制过程(scp)是否完成?
- javascript - 在跟踪鼠标位置的同时编写旋转的嘎嘎声
- java - 为什么在这个逻辑中使用 -1,1,0?
- node.js - NodeJs fs.close() TypeError: fd must be a file descriptor
- c# - 如何使用 Itemcheck 事件选择所有复选框?
- java - 将编辑保存到 listview android studio