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

标签 python django

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

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/

相关文章:

python - 使用 Pandas 数据框不相交组进行随机抽样

Python -- 连接错误 : Max retries exceeded

django - 有没有办法在管理搜索中搜索多个术语? Django

node.js - 使用 django 和 nodejs 为 websocket 设置 nginx 的配置(wss ://)

python - 在 Pygame 中为矩形赋值时出错

python - Apache mod_wsgi 在部署 Django 项目时抛出错误 "403 Forbidden"

python - 多个样本的 3D 曲面绘图

python - 为什么不能从我的个人 PyPI 服务器安装 Python 包?

python - Django model.delete() 方法返回成功删除但实际上没有删除

database - 用于保存 django 模型的单独线程