gpt4 book ai didi

python - 更新 Django 中用户对象的变量值

转载 作者:行者123 更新时间:2023-12-01 09:30:47 24 4
gpt4 key购买 nike

我正在尝试实现一些功能,允许用户使用 Django 表单在 Django 项目中编辑其个人信息。当用户在表单中输入新值并按回车键时,他们将返回到正确的主配置文件页面,但是这些值仍与以前相同。以下是我尝试实现该功能的方法:

表单

class UpdateProfile(forms.ModelForm):
email = forms.EmailField(required=False)
first_name = forms.CharField(required=False)
last_name = forms.CharField(required=False)
age = forms.IntegerField(required=False)
height = forms.IntegerField(required=False)
weight = forms.IntegerField(required=False)

class Meta:
#Here are the fields that i want editable
model = User
fields = ('email', 'first_name', 'last_name', 'age', 'height', 'weight')

#Here im trying to commit the changes to the user and return the user
def save(self, commit=True):
super(UpdateProfile, self).__init__(commit)


if commit:
user.save()

return user

观看次数

def update_profile(request):
args = {}

if request.method == 'POST':
form = UpdateProfile(request.POST, instance=request.user)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('account/profile.html'))

else:
form = UpdateProfile()
args['form'] = form
return render(request, 'account/edit_profile.html', args)

HTML

% block head %}
<title>Profile</title>
{% endblock %}

{% block body %}
<div class="container">
<form method="POST" action="{% url 'account:profile' %}">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
<br>
</div>
{% endblock %}

最佳答案

您的表单将直接提交到查看个人资料页面。但该页面可能不希望验证表单。您需要将其提交回 update_profile 页面,通常通过在表单 HTML 元素中使用 "." 操作来完成此操作。

<form method="POST" action=".">

完成此操作后,您会发现表单 save() 方法存在一些问题。无论如何,该方法没有做任何有用的事情;您应该删除它并让父类(super class)自动调用。

关于python - 更新 Django 中用户对象的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49988421/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com