模板
一,定义模板
1. 变量的定义
- 视图view传递给模板的数据
- 模板的变量要遵守标识符规则
- 语法:{ {var}}
- 注意:如果使用的变量不存在,则插入的是空字符串
- 在模板中使用点语法:字典查询,属性或者方法,数字索引
- 在模板中调用对象的方法:注意不能传递参数
- 示例代码
7.1 \Django\MyDjango\project\MyApp\models.py 文件中学生类增加一个返回学生姓名的方法
7.2 \Django\MyDjango\project\templates\MyApp\TransmitObjToTemplates.html 文件中增加class Student(models.Model): # 自定义模型管理器,当自定义模型管理器,Django就不再为模型类生成objects模型管理器 StudentObj = models.Manager() StudentObj2 = StudentManager() objects = None studentName = models.CharField(max_length=64) studentAge = models.IntegerField(max_length=64) studentGender = models.BooleanField(default=False) #grade = models.IntegerField(max_length=64) # 关联外键 grade = models.ForeignKey("Grade",on_delete=models.DO_NOTHING) # 删除关联数据,什么也不做 isDelete = models.BooleanField(default=False) # 不需要定义主键,在生成时会自动增加 def __str__(self): return self.studentName # 在模型类中定义Meta类,用于设置元信息 class Meta: # 定义数据表名,推荐使用小写,默认为项目小写_类名小写 #db_table = 'myapp_' # 对象的默认排序字段,获取对象的列表时使用 ordering = ['id'] # 升序 # ordering = ['-id'] # 降序 # 注意:排序会增加数据库开销 # 类方法,创建数据库对象 @classmethod def AddStudents(cls,Name,Age,Grade,IsDelete,Gender): StuOBJ = cls(studentName = Name,studentAge = Age,grade = Grade,isDelete = IsDelete,studentGender = Gender) return StuOBJ def GetStudentName(self): return self.studentName
7.3 \Django\MyDjango\project\MyApp\views.py 文件中增加以下内容<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>我的</title> </head> <body> <h1>欢迎:{ { UserName}}</h1> <a href="/Login">登录</a> <a href="/Logout">退出</a> <h1>使用类的属性获取学生姓名 = { { StudentObj.studentName}}</h1> <h1>使用类的方法获取学生姓名 = { { StudentObj.GetStudentName}}</h1> </body> </html>
# 向模板中传递对象 from .models import Student def TransmitObjToTemplates(request): StudentObj = Student.StudentObj2.get(pk=1) return render(request,"MyApp/TransmitObjToTemplates.html",{ "StudentObj":StudentObj})
2. 标签
-
语法:{%tag%}
-
作用:
2.1 在输出中创建文本
2.2 控制逻辑和循环 -
if 标签
3.1 格式:# 1. if 格式 { % if 表达式 %} 语句 { % endif %} # 2. if else 格式 { % if 表达式1 %} 语句1 { % else 表达式2 %} 语句2 { % endif %} # 3. if elif else 格式 { % if 表达式1 %} 语句1 { % elif 表达式2 %} 语句2 ...... { % elif 表达式n %} 语句n { % else 表达式3 %} 语句3 { % endif %}
-
for 标签
4.1 格式# 1.列表循环获取数据 { % for 变量 in 列表 %} 语句 { % endfor %} # 2.列表为空或不存在时执行语句2 { % for 变量 in 列表 %} 语句1 { % empty %} 语句2 { % endfor %} # 3.表示当前是第几次循环 { { forloop.counter}}
4.2 示例代码
1. \Django\MyDjango\project\templates\MyApp\Students2.html 增加以下内容 <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/html"> <head> <meta charset="UTF-8"> <title>学生信息</title> </head> <body> <h1>学生信息列表</h1> <ul> <li> <a href="#">学生序号--学生姓名--学生年龄--学生班级</a> </li> <!--[python04,python05,python06]--> { %for Student in StudentList%} <li> <a href="#">{ { forloop.counter}}--{ { Student.id}}--{ { Student.studentName}}--{ { Student.studentAge}}