|
我们可以从数据库动态生成表,而不是这个硬编码表。回想python manage.py loaddata employee_fixture.json一下设置步骤。该命令使用一个名为 Django Fixture 的 JSON 文件将所有 57 条员工记录加载到应用程序的数据库中。我们使用views.py中的视图将此数据传递给模板: from django.shortcuts import render from .models import Employee def index(request): return render(request, "index.html", {"employees": Employee.objects.all()}) 复制 第三个位置参数render是可供模板使用的数据字典。我们使用这些数据和for标签来构建表。即使在我改编此网页的原始模板中,员工表也是硬编码的。
我们的新方法减少了数百行重复的硬编码表行。复制 更大的好处是,WhatsApp 数据库 这大大简化了更新表的过程。任何管理员都可以使用管理面板进行实时更新使用您创建的用于python manage.py createsuperuser访问的凭据)。这是使用 Django 与此渲染引擎的好处,而不是在静态站点生成器或其他模板方法中单独使用它。 如果否则 # 该if标签是一个非常强大的标签,允许您评估模板中的表达式并相应地调整 HTML。像这样的行{% if 1 == 2 %}是完全有效的,尽管有点无用,因为它们每次都会计算出相同的结果。该if标签的亮点在于与视图传递到模板的数据进行交互时。考虑sidebar.html中的以下示例: 复制 请注意,默认情况下,整个用户对象都会传递到模板中,而无需我们在视图中指定任何内容来实现这一点。
这使我们能够访问用户的身份验证状态(或缺乏身份验证状态)、用户名和其他功能,包括遵循外键关系来访问存储在用户配置文件或其他连接模型中的数据,所有这些都来自 HTML 文件。 您可能担心此级别的访问可能会带来安全风险。但是,请记住,这些模板适用于服务器端渲染框架。构建页面后,标签已消耗掉自己并被纯 HTML 替换。因此,如果某个if语句在某些条件下将数据引入页面,但该数据未在给定实例中使用,则该数据根本不会发送到客户端,因为该语句是在服务器端评估的if。这意味着正确构建的模板是一种非常安全的方法,可以将敏感数据添加到页面,除非有必要,否则数据不会离开服务器。
|
|