Django - 更新用户/帐户管理

Posted

技术标签:

【中文标题】Django - 更新用户/帐户管理【英文标题】:Django - Update User/Account Management 【发布时间】:2012-12-11 17:16:52 【问题描述】:

我正在尝试通过表单更新我的用户帐户信息。我有一个 ok 表单,它只显示一个密码/电子邮件字段并清理电子邮件字段。我的观点有问题。这是我得到的错误:无法通过用户实例访问管理器。 这是我的观点:my_account 函数。

def my_account(request):
    user = request.user
    if request.method == 'POST':
        form = MyAccountForm(request.POST)
        if form.is_valid():
            user = user.objects.get(username=username),
            password = user.set_password('password2'),
            email = forms.cleaned_data['email']
            user.save()
            return HttpResponseRedirect('/')
    else:
        form = MyAccountForm()
    variables = RequestContext(request, 
        'form': form,
    )
    return render_to_response(
        'my_account.html',
        variables
    )

【问题讨论】:

然而,这与:***.com/questions/3874187/… 完全相同。在发布新问题之前,请尝试简单地搜索您的错误消息。 我做到了,显然这不是我唯一的问题。我总是先查找自己的错误,但有时这并不总是有帮助。 【参考方案1】:

你在哪里

user.objects.get

你想要的

User.objects.get

objects是错误信息中引用的管理器,user是引用的实例(User的实例,实际类)

【讨论】:

好的,现在它说用户名未定义,所以我将用户名添加到请求旁边的参数和带有表单的变量中,但现在我收到错误:my_account() 恰好需要 2 个参数(1给定) 哇,这里有很多问题。听起来您需要 1:阅读您的错误消息,2:了解有关 Django 的更多信息,3:校对您的代码。让我们解决这些问题: 1. "my_account() takes exactly 2 arguments (1 given)"= 你改变了my_account 所以它需要 2 个参数,但你仍然只给它 1(大概是请求)。 2:据我所知,Django表单中的所有数据都被序列化到request中的POST字段中;变量不是单独传递的。要访问username,您不应该将其添加为新参数,而是从请求中提取它。 3:看看你的代码。您没有在任何地方定义username(与问题#1 相关——实际上并未阅读您的错误消息)。您只需在get 调用中使用它。您需要从请求中实际提取它,然后才能将其传递给其他任何东西! 我试图从请求中提取它,例如 user = request.user(user = User.username),我知道这是不正确的,但我不知道如何调用它。我将它添加为参数的原因是因为我在以前的视图页面 - user_page 中完成了它并且它工作正常,所以我想看看这是否有帮助。我对此仍然很陌生,所以很抱歉我还没有完全理解所有内容。另外,我确实阅读了我的错误消息,但有时我并不完全理解这个问题。我知道它的用户名有问题,而且我没有在任何我不知道在哪里调用它。 作为一个例子,看看你是如何提取email的。这可能就是您想要提取username 的方式。虽然现在我正在重新阅读您的代码,但您为什么还要这样做?你已经有了user,从你做user = request.user开始。此外,这个 sn-p user = request.user(user = User.username) 是错误的,原因有很多:1. 在request.user 中,user 是一个属性,而不是一个函数,2:你在比较 userusername子句,3:正如我上面所说,User 是类名,而不是实例名,因此没有.username 属性。

以上是关于Django - 更新用户/帐户管理的主要内容,如果未能解决你的问题,请参考以下文章

如何从命令行使用受限用户帐户更新 Azure 上的云服务

Django 自定义用户电子邮件帐户验证

Django 用户验证

Laravel 管理员更新用户信息,更新自己的管理员帐户信息时重复的电子邮件条目

第一次启用管理员时,我可以使用现有用户作为 Django 管理员吗?

为不同的 Web 用户(管理员、客户)提供不同的菜单视图以创建新帐户