0

ペットの飼い主が自分のプロフィールを作成し、ペットの写真をアップロードできるアプリを作ろうとしています。

ユーザーがアカウントまたはログインを作成すると、プロファイルにリダイレクトされます。プロフィール ページには、このエラーが表示される代わりに、名前などの情報が表示されるはずです。

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))

私のプロフィール.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
4

1 に答える 1

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))
于 2013-03-08T10:17:54.903 に答える