1

我想将带有用户信息的变量(Clients通过 OneToOneField 链接到模型)传递django.contrib.auth.modelsbase.html文件中。

context_processors.py所以,我用下面的代码创建了一个

from django.contrib.auth.models import User

    def userData(request):  
        user = request.user
        u = User.objects.get(username=user)
        us = u.clients.first_name
        uv = u.clients.avatar
        return {
            'u': u,
            'us': us,
            'uv': uv
        }

一切正常,直到我退出。

当我尝试再次登录时,我得到了accounts/loginurl 并得到了一个

DoesNotExist at /accounts/login/
User matching query does not exist.
4

1 回答 1

3

好吧,您已经request.user a User,因此再次获取它没有多大意义。

您可以简单地检查用户是否已登录:

def userData(request):
    if request.user.is_authenticated:
        return {
            'u': request.user,
            'us': request.user.clients.first_name,
            'uv': request.user.clients.avatar,
        }
    return {}

注意:名称clientsplular,因此暗示s的集合Client通常模型名称是单数的(Client而不是Clients),并且 a 的相关名称(OneToOneField如果您自己指定)也应该是单数的。

于 2020-02-18T11:41:34.157 回答