2017-08-27 53 views
0

在“MYAPP”我有一个模型“资料”,这股与我的自定义用户模型OnetoOneField关系。在我的许多观点中,我需要检查用户是否设置了配置文件。所以,我创建了一个模块“profilecheck”包含此功能:自定义函数来查询数据库跨Django的意见

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(总是)返回假。任何想法为什么?

+0

编辑响应阿米尔阿德南 –

+0

如果你尝试'打印(Profile.objects.all())'发生了什么?也许您的个人资料数据还没有建立,或者你还没有登录.. –

回答

0

因为你试图在has_profile功能使用一个未定义的变量。您正在尝试使用request.user,但没有定义request因此它提出了哪些获取except子句捕获的异常,并返回False,你需要传递请求作为参数has_profile功能。

+0

我已经试过了,但它仍然返回False –

+0

告诉我你如何更新'has_profile'功能,你现在是如何调用它。 –

+0

已编辑的问题,请看看 –