在Django+MySQL中自动隐藏符合特定条件的表格行
解决方案
有两种简单的实现方式,可根据需求选择:
方案一:后端过滤数据(推荐)
直接在数据库查询阶段排除user为'abc'的记录,前端不会收到这些数据,也就不会渲染对应行,性能更优。
修改views.py的查询逻辑:
def home_view(request): # 排除user字段为'abc'的记录 auth = Cvs_logs.objects.exclude(user='abc') return render(request, 'page.html', {'Cvs_logs': auth })
方案二:前端模板条件渲染
如果需要保留后端数据,仅在前端隐藏,可通过Django模板的条件判断实现,只渲染user不等于'abc'的行。
修改page.html的循环部分:
<table border="2"> <tr> <th> ID</th> <th> NAME</th> <th> PASSWORD</th> <th> IP</th> <th>PORT</th> </tr> {% for data in Cvs_logs %} {% if data.user != 'abc' %} <tr> <td>{{data.id}}</td> <td>{{data.user}}</td> <td>{{data.pass}}</td> <td>{{data.ip}}</td> <td>{{data.port}}</td> </tr> {% endif %} {% endfor %} </table>
注意:修复Model中的错误
你的models.py里id字段定义有误,缺少括号会导致运行报错,修正如下:
class Cvs_logs(models.Model): id = models.BigIntegerField() # 需加括号实例化字段 ip = models.CharField(max_length=100) port = models.CharField(max_length=100) user = models.CharField(max_length=100) pass = models.CharField(max_length=100) class Meta: db_table = "xyz"
内容的提问来源于stack exchange,提问作者ahsan yazdani
相关产品推荐
相关产品推荐

