自定义函数,用于跨Django视图查询数据库

时间:2017-08-27 22:58:15

标签: python django

在'myapp'中我有一个模型'Profile',它与我的自定义User模型共享OnetoOneField关系。在我的许多观点中,我需要检查用户是否设置了个人资料。所以我创建了一个包含这个函数的模块'profilecheck':

def has_profile(req):
    try:       
        profile = Profile.objects.get(user=req.user)
        return profile
    except: 
        return False

在我的views.py中,我有以下内容:

from myapp.utils.profilecheck import has_profile
from myapp.models import Profile

def viewprofile(request):   
    if has_profile(request):
        context = {
            'profile': has_profile(request) 
        }
        return render(request, 'profile.html', context)         
    else:
        return render(request, 'setup_profile.html', {})

在视图中调用时,has_profile()始终返回False。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

因为您试图在has_profile函数中使用未定义的变量。您正在尝试使用request.user但未定义request因此它引发了一个异常,该异常会被except子句捕获并返回False,您需要将请求作为has_profile函数的参数。