如果 django 中不存在数据,如何引发错误消息 table
How to raise error message if data does not exist in django table
我有我的 table 和过滤器,所有设置和工作,但我希望以这样的方式添加错误功能,当我查询数据库中存在的数据时,它应该显示结果通常是我,但是,当我输入一个不存在的 qs 时,它应该在 table 上显示一条消息,上面写着 "record does not exist" 而不是空白 table.
这是我的观点:
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from django.shortcuts import render
from django_tables2 import RequestConfig
from django_tables2.export import TableExport
from .models import Employee
from .models import EmployeeFilter
from .tables import EmployeeTable
@login_required()
def employees(request):
filter = EmployeeFilter(request.GET, queryset=Employee.objects.all())
table = EmployeeTable(filter.qs)
RequestConfig(request).configure(table)
count = Employee.objects.all().count()
male_count = Employee.objects.filter(gender__contains='Male').count()
female_count = Employee.objects.filter(gender__contains='Female').count()
user_count = User.objects.all().count()
export_format = request.GET.get("_export", None)
if TableExport.is_valid_format(export_format):
exporter = TableExport(export_format, table)
return exporter.response("table.{}".format("csv", "xlsx"))
return render(request, "employees/employees.html", {
"table": table,
"filter": filter,
"count": count,
"male_count": male_count,
"female_count": female_count,
"user_count": user_count,
})
表单模板:
<!--filter form-->
<form action="" class="form form-inline employee-filter-form" method="get">
<legend class="mb-2">Filter employee records</legend>
<div class="fieldWrapper">
{{ filter.form.first_name }}
</div>
<div class="fieldWrapper">
{{ filter.form.last_name }}
</div>
<button aria-expanded="false" aria-haspopup="true"
class="ml-2 btn btn-danger filter-btn" type="submit">
Filter
</button>
</form>
您可以在模板中处理它。只需检查您传递的查询集是否为空:
{% if queryset %}
{% for i in queryset %}
{{ i.text }}
{% endfor %}
{% else %}
Error: Queryset is empty!
{% endif %}
正如丹尼尔上面提到的,你也可以用 if
但用 empty
:
{% for i in queryset %}
{{ i.text }}
{% empty %}
Error: Queryset is empty!
{% endfor %}
我有我的 table 和过滤器,所有设置和工作,但我希望以这样的方式添加错误功能,当我查询数据库中存在的数据时,它应该显示结果通常是我,但是,当我输入一个不存在的 qs 时,它应该在 table 上显示一条消息,上面写着 "record does not exist" 而不是空白 table.
这是我的观点:
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from django.shortcuts import render
from django_tables2 import RequestConfig
from django_tables2.export import TableExport
from .models import Employee
from .models import EmployeeFilter
from .tables import EmployeeTable
@login_required()
def employees(request):
filter = EmployeeFilter(request.GET, queryset=Employee.objects.all())
table = EmployeeTable(filter.qs)
RequestConfig(request).configure(table)
count = Employee.objects.all().count()
male_count = Employee.objects.filter(gender__contains='Male').count()
female_count = Employee.objects.filter(gender__contains='Female').count()
user_count = User.objects.all().count()
export_format = request.GET.get("_export", None)
if TableExport.is_valid_format(export_format):
exporter = TableExport(export_format, table)
return exporter.response("table.{}".format("csv", "xlsx"))
return render(request, "employees/employees.html", {
"table": table,
"filter": filter,
"count": count,
"male_count": male_count,
"female_count": female_count,
"user_count": user_count,
})
表单模板:
<!--filter form-->
<form action="" class="form form-inline employee-filter-form" method="get">
<legend class="mb-2">Filter employee records</legend>
<div class="fieldWrapper">
{{ filter.form.first_name }}
</div>
<div class="fieldWrapper">
{{ filter.form.last_name }}
</div>
<button aria-expanded="false" aria-haspopup="true"
class="ml-2 btn btn-danger filter-btn" type="submit">
Filter
</button>
</form>
您可以在模板中处理它。只需检查您传递的查询集是否为空:
{% if queryset %}
{% for i in queryset %}
{{ i.text }}
{% endfor %}
{% else %}
Error: Queryset is empty!
{% endif %}
正如丹尼尔上面提到的,你也可以用 if
但用 empty
:
{% for i in queryset %}
{{ i.text }}
{% empty %}
Error: Queryset is empty!
{% endfor %}