如何在Django中更新用户个人资料 [英] How to update user profile in Django

查看:115
本文介绍了如何在Django中更新用户个人资料的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to let my student to update his profile after he logged in, but I don't seem to be able to code the profile update properly. This is my code:

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' object没有属性'name'表示当前用户未通过身份验证。您可以使用 login_required 装饰器:

The error 'AnonymousUser' object has no attribute 'name' says that current user is not authenticated. You can make your view available only for authenticated users with login_required decorator:

@login_required
def profile_edit(request):
    pass

用户模型也没有名称属性,您需要访问用户的Student属性来获取它:

Also User model dont have name attribute, you need to access user's student attribute to get it:

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

这篇关于如何在Django中更新用户个人资料的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆