2013-03-08 68 views
0

我试图做一个应用程序,宠物的所有者可以创建自己的配置文件并上传他们的宠物的图片。Django错误的本地变量'人'参考前

当用户创建一个帐户或登录时,他会被重定向到配置文件中。配置文件页面应显示他的信息,例如名称,而不是我收到此错误。

UnboundLocalError at /profile/ 
local variable 'Person' referenced before assignment 
Request Method: GET 
Request URL: /profile/ 
Django Version: 1.4.3 
Exception Type: UnboundLocalError 
Exception Value: local variable 'Person' referenced before assignment 


Traceback Switch to copy-and-paste view 

C:\o\mysite\pet\views.py in Profile 

60. return render_to_response('profile.html', {'Person': Person}, context_instance=RequestContext(request)) 

问题是链接到我的个人资料功能在views.py

我的我的views.py

@login_required  
def Profile(request): 
     if not request.user.is_authenticated(): 
      return HttpResponseRedirect('/login/') 
     Person = request.user.get_profile 
     return render_to_response('profile.html', {'Person': Person}, context_instance=RequestContext(request)) 

我profile.html

{% if Person %} 
<ul> 
     <li>Name : {{Person.user}} </li> 
</ul> 
{% endif %}  

我的模型零件.py

from django.db import models 
from django.db.models.signals import post_save 
from django.contrib.auth.models import User 

class Person(models.Model): 
    user = models.OneToOneField(User) 
    name = models.CharField(max_length=100) 
    image = models.FileField(upload_to="images/",blank=True,null=True) 


    def __unicode__(self): 
     return self.name 

class Pet(models.Model): 
    Person = models.ForeignKey(Person) 
    description = models.CharField(max_length=100) 
    image = models.FileField(upload_to="images/",blank=True,null=True) 

    def __unicode__(self): 
     return self.description 
+1

'人 - request.user.get_profile'应该是'人= request.user.get_profile()' – 2013-03-08 10:13:31

+0

是啊,我仍然得到错误 – donkeyboy72 2013-03-08 10:15:29

+0

它; s代码的排列 – catherine 2013-03-08 10:16:19

回答

1

尝试将Person放在request.user.is_authenticated的顶部。你忘了 '()' 中get_profile

@login_required  
def Profile(request): 
    Person = request.user.get_profile() 
    if not request.user.is_authenticated(): 
     return HttpResponseRedirect('/login/') 
    return render_to_response('profile.html', { 
     'Person': Person 
    }, context_instance=RequestContext(request)) 
+0

你的位置!谢谢:] – donkeyboy72 2013-03-08 10:25:49

+0

,在赋值之前引用局部变量'Person'是什么意思? – donkeyboy72 2013-03-08 10:27:30

+0

您呈现空的Person变量。如果你渲染一个变量,你必须检查它是否正确调用并定义它。 – catherine 2013-03-08 10:36:59