首页 > 解决方案 > 我正在尝试更新 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)

    

标签: pythonhtmldjangoformsemail

解决方案


这是您如何处理视图以从 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)

推荐阅读