Django中模板介绍

模板

一,定义模板

1. 变量的定义
  1. 视图view传递给模板的数据
  2. 模板的变量要遵守标识符规则
  3. 语法:{ {var}}
  4. 注意:如果使用的变量不存在,则插入的是空字符串
  5. 在模板中使用点语法:字典查询,属性或者方法,数字索引
  6. 在模板中调用对象的方法:注意不能传递参数
  7. 示例代码
    7.1 \Django\MyDjango\project\MyApp\models.py 文件中学生类增加一个返回学生姓名的方法
    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.2 \Django\MyDjango\project\templates\MyApp\TransmitObjToTemplates.html 文件中增加
    <!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>
    
    7.3 \Django\MyDjango\project\MyApp\views.py 文件中增加以下内容
    # 向模板中传递对象
    from .models import Student
    def TransmitObjToTemplates(request):
        StudentObj = Student.StudentObj2.get(pk=1)
        return render(request,"MyApp/TransmitObjToTemplates.html",{
         "StudentObj":StudentObj})
    
    在这里插入图片描述
2. 标签
  1. 语法:{%tag%}

  2. 作用:
    2.1 在输出中创建文本
    2.2 控制逻辑和循环

  3. 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 %}
    
  4. 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}}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西门一刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值