2013-03-08 2 views
0

Я пытаюсь создать приложение, в котором владельцы домашних животных могут создавать свой собственный профиль и загружать фотографии своих питомцев.Django Ошибка локальная переменная 'Person', на которую ссылаются перед назначением

Когда пользователь создает учетную запись или логин, он перенаправляется в профиль. На странице профиля должно отображаться его имя, например, вместо этого я получаю эту ошибку.

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' должен быть' Person = request.user.get_profile() ' –

+0

Да, я все еще получаю ошибку – donkeyboy72

+0

Это; s расположение вашего кода – catherine

ответ

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

+0

, что означает местная переменная 'Person', на которую ссылаются перед присвоением? – donkeyboy72

+0

Вы передаете переменную нулевого пользователя. Если вы визуализируете переменную, вы должны проверить ее, если вы правильно ее назовете, и вы ее определяете. – catherine

Смежные вопросы