簡體   English   中英

使用實例重置表單Django

[英]Reset form Django with instance

我創建頁面來更新用戶auth用戶名。 但是在前端,如果存在用戶名django顯示錯誤(確定)但更改request.user實例。 因此,菜單上的我的用戶名也更改並輸入。 我需要刷新頁面才能恢復正常。

form_profile = UserProfileForm(request.POST or None, instance = UserProfile.objects.get(user = request.user))
    form_user = UserForm(request.POST or None, instance = request.user )
    if form_profile.is_valid() and form_user.is_valid():
        form_profile.save()
        form_user.save()

    template = loader.get_template('users/user_edit.html')
    return HttpResponse(template.render({"form_profile":form_profile, "form_user": form_user}, request))

我無法使用form_profile = UserProfileForm()重置表單,因為這是用戶編輯頁面。 我需要帶有實際信息的“重置”表格。

屏幕截圖 在此處輸入圖片說明

如果您從數據庫中獲取用戶並將其用作表單實例,則request.user不應更改。

user = User.objects.get(id=request.user.id)
form_user = UserForm(request.POST or None, instance=user )

順便說一句,通常建議在成功發布請求后重定向(即使您重定向到相同的URL)。 您還可以使用render快捷方式簡化代碼:

from django.shortcuts import render, redirect

def my_view(request):
    form_profile = UserProfileForm(request.POST or None, instance = UserProfile.objects.get(user = request.user))
    form_user = UserForm(request.POST or None, instance = request.user )
    if form_profile.is_valid() and form_user.is_valid():
        form_profile.save()
        form_user.save()
        return redirect('/success-url/')

    return render(request, 'users/user_edit.html', {"form_profile":form_profile, "form_user": form_user})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM