django表如何检测表是否为空
我是django和web开发的新手,基于示例和帮助,我拼凑了一些东西,将模型呈现在django表中。我的模板代码基本如下:django表如何检测表是否为空,django,django-templates,django-views,django-tables2,Django,Django Templates,Django Views,Django Tables2,我是django和web开发的新手,基于示例和帮助,我拼凑了一些东西,将模型呈现在django表中。我的模板代码基本如下: {% block content %} {% load static %} {% load render_table from django_tables2 %} <div class="function-page"> <div class="table-form"> <div class="function-con
{% block content %}
{% load static %}
{% load render_table from django_tables2 %}
<div class="function-page">
<div class="table-form">
<div class="function-container">
{% render_table reviews %}
</div>
</div>
</div>
{% endblock %}
@login_required(login_url="login/")
def review(request):
table = DummyTable(DummyModel.objects.all())
form = DummyForm()
RequestConfig(request, paginate={"per_page": 10}).configure(table)
return render(request, 'review.html', {'reviews': table, 'DummyForm': form})
这个很好用。但是,我想做的是向用户显示一条消息,说明当数据库表为空时没有记录。在当前设置中,它显示一个空表,其中的列从可用性角度来看可能不是最好的。执行以下操作:
{% if reviews %}
<div class="function-page">
<div class="table-form">
<div class="function-container">
{% render_table reviews %}
</div>
</div>
</div>
{% else %}
<div>
<p> Message to use </p>
</div>
{% endif %}
{%if-reviews%}
{%render_table reviews%}
{%else%}
要使用的消息
{%endif%}
最简单的方法可能是使用模板。假设您的变量为空,则称为reviews
:
{% block content %}
{% load static %}
{% if reviews %}
{% load render_table from django_tables2 %}
<div class="function-page">
<div class="table-form">
<div class="function-container">
{% render_table reviews %}
</div>
</div>
</div>
{% else %}
<span> Whatever holding response/error message you want. </span>
{% endif %}
{% endblock %}
要使用消息,您需要在模板中包含类似的内容:
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{%if消息%}
{消息%中的消息为%s}
{{message}}
{%endfor%}
{%endif%}
或者你可以两者兼得!:) 有两种选择。您可以在
class Meta
class Reviews(tables.Table):
class Meta:
empty_text = _("There are no reviews yet")
或者您可以在模板内部检查它,避免以这种方式呈现表
{% if reviews_table.data.list %}
{% render_table reviews_table %}
{% else %}
<h1>There are no reviews yet</h1>
{% endif %}
{%if检查\u table.data.list%}
{%render_table reviews_table%}
{%else%}
目前还没有评论
{%endif%}
根据表格进行测试。分页的行
当表格没有数据时,它将为空并评估为False
他们在django_表2/templates/django_表2/bootstrap.html:~26
template:
{% for row in table.paginated_rows %}
...
{% empty %}
... {{ table.empty_text }}
{% endfor %}
米兰回答对我有效,但从if条件中删除“.list”:
{% if reviews_table.data.list %}
{% render_table reviews_table %}
{% else %}
<h1>There are no reviews yet</h1>
{% endif %}
{%if检查\u table.data.list%}
{%render_table reviews_table%}
{%else%}
目前还没有评论
{%endif%}
我认为reviews
表始终是一个有效变量。有没有办法检查是否为空?如果为空,则不会执行If
语句。根据我对另一个答案的评论,我认为reviews表始终是一个有效变量。有没有办法检查是否为空?对有效但为空的变量使用{%if variable%},它的计算结果通常为False,ime(请参阅。但是,如果需要真正的防弹检查,可以执行{value | default:“nothing”}
-从Ok开始,当记录计数为0时,我在我的视图中将其显式设置为None,并且可以正常工作。太好了!我会冒险发现上面代码中未包含的DummyTable
对象正在生成模板当前读取的内容,因此在{%if%}中不会计算为False
statement。很高兴您得到了一些有用的东西。:)是的,这可能是因为它是一个django tables实例,可能导致了这个问题;)谢谢你的帮助。
{% if reviews_table.data.list %}
{% render_table reviews_table %}
{% else %}
<h1>There are no reviews yet</h1>
{% endif %}