Django(二)模板

一、模板概念

1.Django通过模板动态生成html

2.模板的加载位置

模板一般建立在templates文件夹中,全局路径的设置在settings.py中

​ DIRS:决定了整个项目的模板路径的位置

​ APP_DIRS:决定每个应用的模板路径是否可用,是否在应用的templates目录中寻找模板

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(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',
            ],
        },
    },
]

3.模板引擎

Django框架使用Django的模板引擎,本质是一个类,实现相关功能,继承自BaseEngine

可以解释模板变量和模板标签

二、模板变量

1.语法

html中直接访问变量:{{变量名}}

点语法访问复杂类型变量,例如list,dict,obj类型的变量

​只能用.访问,不支持负数

from django.shortcuts import render


def pass_dict(request):
data = {
'name':'apple',
'price':12.5,
'color':'yellow'
}
return render(request,'var/var_demo.html',{'mydict':data})


class Cake:
def __init__(self,name,price):
self.name = name
self.price = price

def order_cake(self):
return '订购一个名字为:'+str(self.name) +'价格为:'+str(self.price)+'的蛋糕'


def pass_object(request):
cake = Cake('生日蛋糕',12.4)
return render(request,'var/var_object.html',{'cake':cake})


def pass_list(request):
fruits = ['apple','火龙果','香蕉','菠萝']
return render(request,'var/var_list.html',{'fruits':fruits})
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    水果名称:{{ mydict.name }} <br>
    水果价格: {{ mydict.price }} <br>
    水果颜色: {{ mydict.color }}<br>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    蛋糕名字:{{ cake.name }}
    蛋糕价格:{{ cake.price  }}
    调用蛋糕的无参(除了self参数)方法:{{ cake.order_cake }}
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>fruits</title>
</head>
<body>
    列表的第一项:{{ fruits.0 }}
    列表的第三项:{{ fruits.2 }}
</body>
</html>

猜你喜欢

转载自www.cnblogs.com/huiyichanmian/p/11234720.html