如何在Django中更新用户个人资料 [英] How to update user profile in Django
本文介绍了如何在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屋!
查看全文