可以根据在视图中传递字典数据,传递给模板并动态生成网页
模板变量语法: {{变量名}}
取出变量名所对应的值,变量名来源于视图函数中传递的字典key
# urls.py
urlpatterns = [
path('index',index),
]
# views.py
def index(request):
data = {'name':'花花','age':18}
# 创建templates模板文件夹,创建html文件
return render(request,'index.html',data) ## 渲染的视图文件名是index.html 传递的数据是定义的data字典
{# templates/index.html #}
Title
姓名:{{name}}
年龄:{{age}}
配置settings文件
#settings.py
# 模板
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')], # 告诉django的模板引擎在找模板的时候根据这个路径去找
'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',
],
},
},
]
过滤器
过滤器本质就是一个函数,django提供了一些过滤器可以在模板中使用
语法: {{变量名| 过滤器名字}}
# urls.py
path('filter_test',filter_test),
#views.py
# 过滤器,本质是一个函数
def filter_test(request):
data = {
'slogan':'mike',
'lan':'python'
}
return render(request,'filter.html',data)
# filter.html
过滤器
{{slogan | capfirst }}
{{ slogan | default:'空' }}
{{ slogan | default:'life is short'| capfirst }}
模板标签
语法: {%标签名%}
在模板中进行逻辑处理
# urls.py
path('index2',index2),
# views.py
def index2(request):
data = {
'hobby1':['看电影','学python','锻炼'], # 列表
'hobby2':('看电影','学python','锻炼'), # 元组
'hobby3':{'看电影','学python','锻炼'}, # 集合
'score':{'小1':90,'小2':75,'小4':91},
'test' : [],
'status':True,
'num':10
}
return render(request,'index2.html',data)
Title
{hobby}}-->
-
{% for i in hobby %}
{forloop.counter}} {{i}}-->
{forloop.counter0}} {{i}}-->
{forloop.revcounter}} {{i}}-->
{forloop.revcounter0}} {{i}}-->
{forloop.first}} {{i}}-->
- {{forloop.last}} {{i}} {%endfor%}
-
{%for i in score%}
- {{i}} {%endfor%} {%for i in score.values%}
- {{i}} {%endfor%} {%for k,v in score.items%}
- {{k}} {{v}} {%endfor%}
-
{%for t in test%}
- {{t}} {%empty%}
- 抱歉,没有查询到数据 {%endfor%}



