我有一个带有标准视图的tasklist应用程序和另一个过滤任务列表以显示已完成任务的视图。我有一个隐藏按钮,但我不想让“隐藏”数据库的属性似乎有点过分。
{% if hidden==False %}
<a class="btn btn-primary" href="{% url 'hide' %}" data-toggle="tooltip" data-placement="top" title="Hide Completed Tasks"><i class="fas fa-eye-slash"></i></a>
{% else %}
<a class="btn btn-primary" href="{% url 'home' %}" data-toggle="tooltip" data-placement="top" title="Hide Completed Tasks"><i class="fas fa-eye"></i></a>
{% endif %}
但我不知道在哪里放置隐藏在真与假之间的三元逻辑?我宁愿不诉诸js因为我认为这是不整洁的
答案 0 :(得分:0)
无需使其过于复杂:
HTML:
<div class="col-3">
{% if flag %}
<a class="btn btn-primary" href="{% url 'home' %}" data-toggle="tooltip" data-placement="top" title="Hide Completed Tasks"><i class="fas fa-eye"></i></a>
{% else %}
<a class="btn btn-primary" href="{% url 'hide' %}" data-toggle="tooltip" data-placement="top" title="Hide Completed Tasks"><i class="fas fa-eye-slash"></i></a>
{% endif %}
</div>
现在将一个变量放在视图函数中并将var添加到渲染的字典中:
def home(request):
tasks = Task.objects
flag = False
return render(request, 'home/home.html', {'tasks': Task.objects.all().order_by('-pub_date'), 'flag':flag})
def hide(request):
tasks = Task.objects
flag = True
return render(request, 'home/home.html', {'tasks': Task.objects.all().order_by('-pub_date').filter(completed=False), 'flag':flag})