2013-11-05 2 views
0

이 사용자 정의 모델은 class User(models.Model):입니다. Django에 내장 된 인증 시스템 (사용자 모델은 기본적으로 제공됩니다)을 활용하고 싶습니다. 현재 응용 프로그램 헤더에 대한 템플릿 파일이 있습니다. {{ user.username }}과 같이 로그인 한 사용자 이름을 표시하고 싶습니다. 응답 컨텍스트에서 사용자 지정 사용자 모델을 전달하는 템플릿을 제외하고는 정상적으로 작동하는 것 같습니다.Django Authetication : User Model Confict

모델 :

class User(models.Model): 


    first_name = models.CharField(
     max_length=255, 
) 
    last_name = models.CharField(
     max_length=255, 
) 

    summary = models.CharField(
     max_length=4000, 
     blank=True, 
     default="", 
) 

템플릿 : 여기

<ul class="nav navbar-nav navbar-right"> 
      <li><a href="#">{{ user.username }}</a></li> 
    </ul> 

뷰의 방법이다 : 나는 dango.contrib.auth.User의 서브 클래스를 생성하는 것이 가능하다고 생각

app_user = User.objects.get(pk=request.session['user_id']) 
    ... 

    return render_to_response('common-dashboard.html', 
          {'app_user': app_user, 
          'entry': entry 
          }) 
+0

잘 모르겠습니다. 사용자 정의'User' 모델과'render_to_response'를 사용하면 템플릿의'{{app_user}}'변수에 접근 할 수 있습니다. –

+0

'models.py','views.py' 및 템플릿을 게시 할 수 있습니까? @HenryFlorence 요청에 따라 –

+0

이 (가) 편집 됨 – Jhakki

답변

0

하지만, 많은 출처에서에 링크 된 UserProfile 모델을 만드는 것이 좋습니다. 하나 개의 관계에 대한 하나객체 :

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

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    favourite_pizza = models.CharField(max_length=20) 
    #other fields here 

    def __str__(self): 
    return "%s's profile" % self.user 

def create_user_profile(sender, instance, created, **kwargs): 
    if created: 
    profile, created = UserProfile.objects.get_or_create(user=instance) 

post_save.connect(create_user_profile, sender=User) 

User.profile = property(lambda u: u.get_profile()) 

이것은 당신이 당신의 템플릿 {{ app_user.username }}
{{ app_user.profile.favourite_pizza }}을 사용할 수 있도록해야한다. 설명이있는 코드는 here입니다.