Django(9)-模板层简介与入门实例

1、模板简介

  • 模板是可以根据字典数据动态变化的网页
  • 模板可以根据视图中传递的字典数据动态生成响应的HTML网页
    Django(9)-模板层简介与入门实例_第1张图片

2、模板层配置

  • 创建模板层文件夹 <项目名>/templates
  • 在setting.py中TEMPLATES配置项
    • BACKEND:指定模板的引擎
    • DIRS:模板的搜索目录(可以是一个或者多个)
    • APP_DIRS :是否要在应用中的templates文件夹中搜索模板文件
    • OPTIONS:有关模板的选项
  • 配置项中需要修改的部分:
    • 设置DIRS
'DIRS':[BASE_DIR / 'templates'],

3、模板的加载方式

  • 方式1:通过loader获取模板,通过HTTPResponse进行响应在视图函数中
    在视图函数文件中:
from django.template import loader

t=loader.get_template("模板文件名")

html=t.render(字典数据)

return HttpResponse(html)

实例:
setting.py中对模板做如下设置:
Django(9)-模板层简介与入门实例_第2张图片
然后在templates目录下创建一个test_html.html文件,内容如下:

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
head>
<body>
    <h3>我是模板层页面h3>
body>
html>

然后设计路由如下:
Django(9)-模板层简介与入门实例_第3张图片
然后视图函数文件内容如下:

from django.http import HttpResponse,HttpResponseBadRequest
from django.template import loader


def test_html(request):
    t=loader.get_template("test_html.html")
    html=t.render()
    return HttpResponse(html)

保存重启django后,在浏览器打开http://127.0.0.1:8080/test_html,结果如下:
Django(9)-模板层简介与入门实例_第4张图片

  • 方式2:使用render()直接加载并相应模板
from django.shortcuts import render
在视图函数中直接使用下面return语句即可
return render(request,"模板文件名",字典数据

实例:
设计路由如下:
Django(9)-模板层简介与入门实例_第5张图片
在templates文件下依然创建test_html.html文件,内容如下:

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
head>
<body>
    <h3>我是模板层页面h3>
body>
html>

视图文件如下:

from django.shortcuts import render


def test_html(request):
    return render(request,"test_html.html")

然后重启django后,在浏览器打开http://127.0.0.1:8080/test_html,结果如下:
Django(9)-模板层简介与入门实例_第6张图片

  • 方式2和方式1比较,最明显的就是视图函数变得更加简洁,更加简单,所以在后续开发过程中,通常使用方式2的方式

4、视图层与模板层之间的交互

  • 视图函数中可以将python变量封装到字典中传递到模板
  • 模板中,可以使用{ {变量名}}的语法调用视图传进来的变量
    实例:
    设计如下路由:
    Django(9)-模板层简介与入门实例_第7张图片
    templates目录下创建test_html.html文件,内容如下:
DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
head>
<body>
    <h3>用户名:{
    {username}},年龄:{
    {age}}h3>
body>
html>

视图函数如下:

from django.shortcuts import render


def test_html(request):
    info={
     "username":"redrose2100","age":20}
    return render(request,"test_html.html",info)

保存重启django之后,在浏览器打开http://127.0.0.1:8080/test_html,结果如下,与期望一致,达到了视图函数中字典数据传递到了模板中去了的目的
Django(9)-模板层简介与入门实例_第8张图片

你可能感兴趣的:(Web框架,python,django)