我有一个像这样的自定义用户模型class User(models.Model):
我还想利用Django的内置身份验证系统(它具有开箱即用的用户模型)。我目前有一个应用程序头的基本模板文件,我想显示登录的用户名,如{{ user.username }}
这似乎工作正常,除了在响应中传递自定义用户模型的模板上下文。
模特:
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
})
答案 0 :(得分:0)
我认为现在可以创建dango.contrib.auth.User
的子类,但许多来源建议创建一个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 }}
和{{ app_user.profile.favourite_pizza }}
。带有解释的代码是here。