Django-4.2博客开发教程:初识模板(九)

一、模板简介

  • 为了更好的维护和展示页面数据,使用直接返回数据显然是呆板的,不够美观,不够灵活,所以要使用模板。
  • 模板一般都放到项目根目录下的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 @   白灰  阅读(84)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
点击右上角即可分享
微信分享提示