【发布时间】:2019-04-08 08:48:22
【问题描述】:
这可能不是最好的方法(欢迎提出建议)。但是我想根据自定义用户模型中的布尔值在我的主页上显示一个按钮。 我通过视图中的上下文传递这个布尔值的值。但我似乎无法让模板逻辑工作。
Models.py
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
isAdmin = models.BooleanField(default = False,)
#more models...
views.py
from django.views.generic import TemplateView
from django.contrib.auth import get_user_model
from accounts.models import CustomUser
class HomePageView(TemplateView):
template_name = 'home.html'
def get_context_data(self, **kwargs):
context = super(HomePageView, self).get_context_data(**kwargs)
if self.request.user.is_authenticated:
adminStatus = CustomUser.objects.get(id=self.request.user.id)
print(adminStatus.isAdmin)
context['adminStatus'] = str(adminStatus.isAdmin)
return context
主页模板.html
{% extends 'base.html' %}
{% block body %}
{% if user.is_authenticated %}
<h4>Hi {{ user.username }}!</h4>
<a class="btn btn-primary btn-lg" href="{% url 'dashboard' %}" role="button"> Go to Dashboard</a>
{% else %}
<p>You are not logged in</p>
<a href="{% url 'login' %}">login</a>
</div>
{% if adminStatus == "True" %}
<h1>test</h1>
<div class = "adminPanel">
<a class="btn btn-primary btn-lg" href="{% url 'newEquipment' %}" role="button"> add new equipment</a>
</div>
{% endif %}
{% endif %}
{% endblock %}
即使 adminStatus 上下文等于“True”,我也看不到“newEquipment”按钮,正如 print() 命令所验证的那样。 我感觉我的模板逻辑不正确。我也试过了:
{% if adminStatus contains "True" %}
【问题讨论】:
标签: django django-templates django-views