django 查询条件 成员条件in 200316

包含条件

字段_in = 容器

在这里插入图片描述

例子
在这里插入图片描述

### Django Template 系统概述 Django 的模板系统是一个强大的工具,用于实现业务逻辑 (view) 和显示内容 (template) 的分离。这种设计使得开发者能够专注于各自的领域:后端开发人员处理数据和逻辑,而前端开发人员则关注页面布局和样式[^3]。 #### 模板系统的功能 Django 模板层的主要职责是将动态内容嵌入到 HTML 页面中并将其呈现给用户。通过模板引擎的支持,它可以轻松地完成以下任务: - 动态生成 HTML 内容。 - 使用变量、条件语句 (`if`) 和循环结构 (`for`) 来控制内容展示方式。 - 支持继承机制,允许子模板扩展父模板的内容。 以下是有关 Django 模板系统的核心特性和用法的具体说明: --- ### 配置 Django 模板环境 为了使 Django 能够正常加载和渲染模板文件,需要先进行一些基本设置。通常情况下,在项目的 `settings.py` 文件中定义如下参数即可[^1]: ```python TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / "templates"], # 定义模板目录路径 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] ``` 上述代码片段中的 `'DIRS'` 参数指定了自定义模板所在的根目录位置;如果启用了 `'APP_DIRS'`,那么 Django 还会自动查找已安装应用内的默认模板文件夹。 --- ### 基本语法与常用标签 #### 变量插值 在模板中可以通过双大括号包裹的形式访问上下文中传递的数据对象属性或方法返回值。例如: ```html <p>用户名: {{ user.username }}</p> ``` 这里假设视图函数向模板传入了一个名为 `user` 的字典或者模型实例,则可以直接引用其键/字段名作为占位符来填充实际值[^2]。 #### 循环遍历列表项 当需要重复输出某个集合类型的成员时,可利用 `{% for ... %}` 结构配合相应的关键字完成操作。比如打印一个水果名称及其对应的英文单词表: ```html {% for key, value in fruit_dict.items %} <li>{{ key }} -> {{ value }}</li> {% endfor %} ``` 其中 `fruit_dict={"A":"Apple",...}` 是预先设定好的关联数组形式的数据源[^4]。 另外还有一种特殊情况——即目标序列为空的情形下提供备用提示信息的功能也十分实用: ```html <ul> {% for item in items_list %} <li>{{ item.name }}</li> {% empty %} No available items. {% endfor %} </ul> ``` #### 判断分支执行不同区块 除了简单的替换外,有时还需要依据特定条件下决定是否显示某些部分。这时就可以借助于 `{% if ... %}`, `{% elif ... %}`, 或者 `{% else %}` 构造来进行判断了。举个例子说吧,假如有这么一段代码用来区分登录状态下的问候消息差异的话就是这样写的啦: ```html <h1>{% if logged_in_user %}Welcome back!{% else %}Please sign up first.{% endif %}</h1> ``` --- ### 继承与重载 为了让多个页面共享相同的头部导航栏或是底部版权声明等内容而不必每次都重新编写一遍这些固定不变的部分,我们可以采用基于类比关系的概念创建父子级联式的文档架构模式。具体做法是在通用基底上预留好若干待填补的位置标记点,之后再由具体的派生版本分别填充值进去就可以了哦! 主模版(base.html)可能看起来像这样: ```html <!DOCTYPE html> <html lang="en"> <head> <!-- Meta tags --> <title>{% block title %}{% endblock %}</title> </head> <body> <header> {% include "partials/navbar.html" %} </header> <main> {% block content %} Default Content Area. {% endblock %} </main> <footer> Copyright © Your Company Name </footer> </body> </html> ``` 而在其他地方需要用到它的地方只需要简单声明一下自己要覆盖哪些区域就行了呢!比如说这个index.html只关心主体区别的改变而已嘛~ ```html {% extends "base.html" %} {% block title %}Home Page{% endblock %} {% block content %} <article>This is the main article area of home page!</article> {% endblock %} ``` --- ### 总结 综上所述,Django 提供了一套灵活易用的模板解决方案,不仅简化了前后端协作流程,而且增强了应用程序维护效率的同时保持良好的可读性特点。掌握以上提到的基础知识点对于快速入门该框架至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值