模板引擎语法-变量

模板引擎语法-变量

文章目录

(一)在Django框架模板中使用变量的代码实例

1.创建项目

bash 复制代码
cd E:\Python\
django-admin.exe startproject TmplSite

2.在编程工具中打开此项目。

3.创建应用

bash 复制代码
django-admin.exe startapp gramapp

4.定义应用的视图文件

文件路径【TmplSite/gramapp/views.py】

python 复制代码
from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader


# Create your views here.

def index(request):
    return HttpResponse("Hello, Django! You're at the gramapp index.")

def grammar(request):
    context = {}
    context['title'] = "Django Template Grammar"
    context['gram'] = "grammar"
    template = loader.get_template('gramapp/grammar.html')
    return HttpResponse(template.render(context, request))

【代码分析】

代码 分析
context['title'] = "Django Template Grammar 在变量context中添加了第一个属性title,并进行了赋值
context['gram'] = "grammar" 在变量context中添加了第二个属性grm,并进行了赋值
template = loader.get_template('gramapp/grammar.html') 调用get_template()函数加载html模板,并保存在模板对象template中
return HttpResponse(template.render(context, request)) 通过模板对象template调用了render()函数,将上下文对象context传递到html模板grammar.html中进行渲染

5.定义HTML模板的代码实例

文件路径【gramapp/templates/gramapp/grammar.html】

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="/static/css/mystyle.css"/>
    <title>{{ title }}</title>
</head>
<body>

<p class="middle">
    Hello, this is a <b>{{ gram }}</b> page!
</p>

</body>
</html>

【代码分析】

代码 分析
{{ title }} 通过双花括号({{}})引用了views.py中定义的第一个属性{{title}}
Hello, this is a {{ gram }} page! 通过双花括号({{}})引用了views.py中定义的第二个属性{{gram}}

6.定义路由文件

文件路径【TmplSite/gramapp/urls.py】

python 复制代码
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('gram/', views.grammar, name='grammar'),
]

文件路径【TmplSite/TmplSite/urls.py】

python 复制代码
from django.contrib import admin
from django.urls import include, path


urlpatterns = [
    path('gramapp/', include('gramapp.urls')),
    path('admin/', admin.site.urls),
]

7.定义项目根目录的settings.py文件

python 复制代码
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'gramapp.apps.GramappConfig',		# 新增应用
]

8.打开FireFox浏览器访问

http://localhost:8000/gramapp/】

http://localhost:8000/gramapp/gram/】

(二)在Django框架模板中使用变量对象属性的代码实例

1.编辑视图文件

文件路径【TmplSite/gramapp/views.py】

python 复制代码
from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader


# Create your views here.

def index(request):
    return HttpResponse("Hello, Django! You're at the gramapp index.")

def grammar(request):
    context = {}
    context['title'] = "Django Template Grammar"
    context['gram'] = "grammar"
    context['author'] = {'first_name': 'King', 'last_name': 'Wang'}		# 新增此行
    template = loader.get_template('gramapp/grammar.html')
    return HttpResponse(template.render(context, request))

【代码分析】

代码 分析
context['author'] = {'first_name': 'King', 'last_name': 'Wang'} 在变量context中追加了一个属性author,并赋值为一个字典类型

2.编辑HTML模板

文件路径【TmplSite/gramapp/templates/grammar.html】

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="/static/css/mystyle.css"/>
    <title>{{ title }}</title>
</head>
<body>

<p>
    Hello, this is a <b>{{ gram }}</b> page!
</p>
<p>
    Author: <b>{{ author.first_name }} {{ author.last_name }}</b>
</p>

</body>
</html>

【代码分析】

代码 分析
Author: {{ author.first_name }} {{ author.last_name }} 通过.引用视图中定义的两个属性

3.打开FireFox浏览器访问

http://localhost:8000/gramapp/gram/】

(三)在Django框架模板中使用变量显示列表

1.编辑视图文件

文件路径【TmplSite/gramapp/views.py】

python 复制代码
from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader


# Create your views here.

def index(request):
    return HttpResponse("Hello, Django! You're at the gramapp index.")

def grammar(request):
    context = {}
    context['title'] = "Django Template Grammar"
    context['gram'] = "grammar"
    context['author'] = {'first_name': 'King', 'last_name': 'Wang'}
    context['languages'] = ['Python', 'Django', 'Jinja2']	# 新增此行
    template = loader.get_template('gramapp/grammar.html')
    return HttpResponse(template.render(context, request))

【代码分析】

代码 分析
context['languages'] = ['Python', 'Django', 'Jinja2'] 在变量context中追加了一个属性languages,并赋值为列表类型

2.编辑HTML模板

文件路径【TmplSite/gramapp/templates/grammar.html】

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="/static/css/mystyle.css"/>
    <title>{{ title }}</title>
</head>
<body>

<p>
    Hello, this is a <b>{{ gram }}</b> page!
</p>
<p>
    Author: <b>{{ author.first_name }} {{ author.last_name }}</b>
</p>
<p>
    Languages:<br>
    <ul>
        {% for lang in languages %}
            <li>{{ lang }}</li>
        {% endfor %}
    </ul>
</p>
</body>
</html>

【代码分析】

代码 分析
Languages: * {% for lang in languages %} {{ lang }} {% endfor %} 定义了一个 * 列表元素;通过在模板中嵌套for语句,遍历了Languages属性;通过在元素中插入列表项"{{lang}}",将Languages属性的每一项值显示在页面中

3.打开FireFox浏览器访问

http://localhost:8000/gramapp/gram/】

相关推荐
再吃一根胡萝卜5 小时前
使用 squashmigrations 命令优化 Django 迁移文件
python·django
BYSJMG9 小时前
计算机大数据毕业设计推荐:基于Spark的气候疾病传播可视化分析系统【Hadoop、python、spark】
大数据·hadoop·python·信息可视化·spark·django·课程设计
大得36911 小时前
django生成迁移文件,执行生成到数据库
后端·python·django
Q_Q19632884751 天前
python的电影院座位管理可视化数据分析系统
开发语言·spring boot·python·django·flask·node.js·php
BYSJMG1 天前
计算机大数据毕业设计推荐:基于Hadoop+Spark的食物口味差异分析可视化系统【源码+文档+调试】
大数据·hadoop·分布式·python·spark·django·课程设计
甄超锋1 天前
python sqlite3模块
jvm·数据库·python·测试工具·django·sqlite·flask
Q_Q5110082852 天前
python的软件工程与项目管理课程组学习系统
spring boot·python·django·flask·node.js·php·软件工程
wyiyiyi3 天前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
千层冷面4 天前
Flask ORM 查询详解:Model.query vs db.session.query vs db.session.execute
数据库·python·django·flask
H2122021654 天前
SQLite3库链接与加载问题解决方案
数据库·oracle·sqlite