0

私はこのようなカスタム ユーザー モデルを持っています。class User(models.Model):また、Django の組み込み認証システム (すぐに使用できるユーザー モデルを備えています) を活用したいと考えています。私は現在、このようにログインしたユーザー名を表示したいアプリケーション ヘッダーのベース テンプレート ファイルを持ってい{{ user.username }}ます。これは、応答コンテキストでカスタム User モデルを渡されるテンプレートを除いて、正常に機能しているようです。

モデル:

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>

表示方法は次のとおりです。

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

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

1 に答える 1

0

のサブクラスを作成できるようになったと思いますdango.contrib.auth.Userが、多くの情報源は、1 対 1 の関係でオブジェクトUserProfileにリンクするモデルを作成することを推奨しています。User

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 }}andを使用できるようになります。
{{ app_user.profile.favourite_pizza }}説明付きのコードはこちらです。

于 2013-11-05T11:25:03.627 に答える