gpt4 book ai didi

python - 如何在 Django 中更新用户配置文件

转载 作者:行者123 更新时间:2023-12-01 02:14:14 25 4
gpt4 key购买 nike

我想让我的学生在登录后更新他的个人资料,但我似乎无法正确编码个人资料更新。这是我的代码:

class User(AbstractUser):
pass


class Student(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
name = models.CharField(max_length=30, null=True, blank=True, default=None)
surname = models.CharField(max_length=50, null=True, blank=True, default=None)
<form method="POST" action="{% url 'profile_edit' %}" class="" >
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Save</button>q
</form>
def profile_edit(request):
user = request.student
form = StudentForm(request.POST or None, initial={'name': user.name,
'surname': user.surname})
if request.method == 'POST':
if form.is_valid():
user.student.name = request.POST['name']
user.student.surname = request.POST['surname']

user.save()
return HttpResponseRedirect('index')

context = {
"form": form
}

return render(request, "registration/profile_edit.html", context)

最佳答案

错误'AnonymousUser'对象没有属性'name'表示当前用户未经身份验证。您可以使用login_required使您的 View 仅对经过身份验证的用户可用。装饰器:

@login_required
def profile_edit(request):
pass

此外,用户模型没有 name 属性,您需要访问用户的学生属性才能获取它:

form = StudentForm(request.POST or None, initial={'name': user.student.name,
'surname': user.student.surname})

关于python - 如何在 Django 中更新用户配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48475039/

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