一、模板简介

  • 为了更好的维护和展示页面数据,使用直接返回数据显然是呆板的,不够美观,不够灵活,所以要使用模板。
  • 模板一般都放到项目根目录下的templates文件夹里。模板包含一些基础的HTML代码和一些特殊的语法,通过特殊的语法将数据动态的插入HTML页面中。
  • 特殊的语法中有一些变量和标签。模板变量由视图函数生成的,然后通过上下文传递到模板里,由浏览器渲染出来。

二、模板使用方法

1)首先在同项目名目录下配置模板路径

在myblog/settings.py >> templates里的dirs

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',
            ],
        },
    },
]

 2) 增加url规则

myblog/urls.py 》》 增加view.index

urlpatterns = [
    ...
    path('', views.index),   
]

3)不同数据类型的操作实例

a. 变量

 blog/views.py

def index(request):
    sitename = '白灰博客'
    url = 'www.baihui.com'
    # 把两个变量封装到上下文里
    context = {
        'sitename': sitename,
        'url': url,
    }
    # 把上下文传递到模板里
  return render(request, 'index.html', context)

 myblog根目录创建templates文件夹,下面再建一个index.html   ,刷新页面查看首页渲染结果。变量需要用双大括号 {{ 变量名}} 来显示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>MyBlog</title>
</head>
<body>
<h2>网站:{{ sitename }}</h2>
<h2>域名:{{ url }}</h2>
</body>
</html>

b. 列表

  blog/views.py

def index(request):
    sitename = '白灰博客'
    url = 'www.baihui.com'
    # 新加一个列表
    list = [
        '测试数据1',
        '测试数据2',
        '测试数据3',
        '测试数据4',
        '测试数据5',
    ]
    # 把两个变量封装到上下文里
    context = {
        'sitename': sitename,
        'url': url,
        'list2': list,
    }
    # 把上下文传递到模板里
    return render(request, 'index.html', context)

注意上面的list2是content的key,模板引用的就是这个key list2,不是上面的变量名list。

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>MyBlog</title>
</head>
<body>
<h2>网站:{{ sitename }}</h2>
<h2>域名:{{ url }}</h2>
{#新加代码#}
<div>
    <ul>
    <h4>测试数据列表:</h4>
        {% for list in list2  %}
        <li>{{ list }}</li>
        {% endfor %}
    </ul>
</div>
</body>
</html>

 

c. 字典

 

def index(request):
    sitename = '白灰博客'
    url = 'www.baihui.com'
    list = [
        '测试数据1',
        '测试数据2',
        '测试数据3',
        '测试数据4',
        '测试数据5',
    ]
    myinfo = {
        'name': 'baihui',
        'addr': 'beijing',
        'age': 33,
        'sex': 'm',
        'as name': 'robin',
    }
    context = {
        'sitename': sitename,
        'url': url,
        'list2': list,
        'info': myinfo,
    }
    # 把上下文传递到模板里
    return render(request, 'index.html', context)

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>MyBlog</title>
</head>
<body>
<h2>网站:{{ sitename }}</h2>
<h2>域名:{{ url }}</h2>
{#新加代码#}
<div>
    <ul>
    <h4>测试数据列表:</h4>
        {% for list in list2  %}
        <li>{{ list }}</li>
        {% endfor %}
    </ul>
</div>
<div>
    <ul>
        <h3>我的个人信息</h3>
        {% for k,v in info.items %}
        <li>{{k}} : {{v}}</li>
        {% endfor %}
    </ul>
</div>
</body>
</

最终结果如下

 

posted on 2023-08-04 18:12  白灰  阅读(76)  评论(0编辑  收藏  举报