【发布时间】:2021-06-08 06:09:36
【问题描述】:
这是我所期望的:如果用户的位置为“1”(管理员),那么 home.html 中的导航菜单必须显示指向管理页面的“管理员”链接。如果用户的位置为“2”(用户),则不会显示链接。
但是当我运行服务器时,此代码会生成与注册用户一样多的管理链接。我只想显示当前登录用户的一个链接。我怎样才能做到这一点?我知道“for user in position”有问题,但是如何为当前登录的用户修复它?
models.py
class Profile(models.Model):
positions = (
('1', 'Admin'),
('2', 'User'),
)
user = models.OneToOneField(User, on_delete=models.CASCADE, unique=True)
image = models.ImageField(default='default.jpg', upload_to='profile_pics')
position = models.CharField(max_length=50, default='Position', choices=positions)
views.py
def home(request):
user_position = Profile.objects.all()
return render(request, 'home.html', {
'position': user_position,
})
home.html
{% for user in position %}
{% if user.position == '1' %}
<a class="nav-link" aria-current="page" href="/admin">Admin</a>
{% endif %}
{% endfor %}
【问题讨论】: