Django实战(二)之模板语言

简介: 该实战教程基于菜鸟教程,菜鸟教程可参考:http://www.runoob.com/django/django-template.html模板语法,每个框架都有其支持的模板语法,Django的模板语法在我看来与vue.js倒有一些相似处,比如它们的模板语法中参数为{{parm}}。

该实战教程基于菜鸟教程,菜鸟教程可参考:http://www.runoob.com/django/django-template.html

模板语法,每个框架都有其支持的模板语法,Django的模板语法在我看来与vue.js倒有一些相似处

,比如它们的模板语法中参数为{{parm}}。

本篇所用到的例子,仍然基于实战(一)

在HelloWorld(该文件夹有urls.py)目录下新增templates文件夹,在templates新增hello.html

<html>
<head>
</head>
<body>
<h1>{{ hello }}</h1>
</body>
</html>

 

修改settings.py文件夹

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [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',
],
},
},
]

这个修改位置就好比Java的SSM开发中的视图解析器(可以是freemarker,可以是jsp,也可以是volocity等)。

 

修改view.py

# -*- coding: utf-8 -*-
#from django.http import HttpResponse
from django.shortcuts import render
def hello(request):
context = {}
context['hello'] = 'Hello World!'
return render(request, 'hello.html', context)

这里的context与Java中的Map或者是Model倒也几分相似。

简单的说,都是来返回给前端数据渲染用的。

 

最后显示为:

 

 

这里说一下Django的模板语言

编程语言什么if-else ,if-else if -else,for 等等是十分比较常用的。

而Django作为Python的web框架同样如此。

 

   (1)if/else或if/elseif/else标签

{% if condition %} ... display {% endif %}

{% if condition1 %} ... display 1 {% elif condition2 %} ... display 2 {% else %} ... display 3 {% endif %}



(2)for标签
<ul>
{% for athlete in athlete_list %}
    <li>{{ athlete.name }}</li> {% endfor %} </ul>

(3)ifequal/ifnotequal 标签

{% ifequal %} 标签比较两个值,当他们相等时,显示在 {% ifequal %} 和 {% endifequal %} 之中所有的值。

下面的例子比较两个模板变量 user 和 currentuser :

 

{% ifequal user currentuser %}
    <h1>Welcome!</h1> {% endifequal %}


和 {% if %} 类似, {% ifequal %} 支持可选的 {% else%} 标签:8

{% ifequal section 'sitenews' %} <h1>Site News</h1> {% else %} <h1>No News Here</h1> {% endifequal %}



(4)注释标签
{# 这是一个注释 #}


(5)过滤器
模板过滤器可以在变量被显示前修改它,过滤器使用管道字符,如下所示:
{{ name|lower }}

{{ name }} 变量被过滤器 lower 处理后,文档大写转换文本为小写。

过滤管道可以被* 套接* ,既是说,一个过滤器管道的输出又可以作为下一个管道的输入

 

  (6)include 标签

{% include "nav.html" %}

同jsp中的<%include file="nav.html"%>
要说区别除了Python与Java的区别外,那就只能说{和%区别。

 
目录
相关文章
|
3月前
|
前端开发 JavaScript BI
Django教程第5章 | Web开发实战-数据统计图表(echarts、highchart)
使用echarts和highcharts图表库实现折线图、柱状图、饼图和数据集图
68 2
|
4月前
|
SQL 数据库 索引
Django MTV - 模型层 - (专题)知识要点与实战案例
Django MTV - 模型层 - (专题)知识要点与实战案例
32 0
|
4月前
|
SQL 前端开发 JavaScript
Python 教程之 Django(10)模板
Python 教程之 Django(10)模板
37 0
|
13天前
|
XML JSON 前端开发
Django视图函数技巧,从入门到实战
Django视图函数技巧,从入门到实战
|
14天前
|
缓存 JavaScript 安全
Django的模板渲染(二)
Django的模板渲染(二)
|
14天前
|
前端开发 JavaScript 开发者
Django的模板渲染(一)
Django的模板渲染(一)
|
27天前
|
开发者 Python
Django模板系统的强大之处:动态渲染与扩展性
【4月更文挑战第15天】Django模板系统是Web开发中的强大工具,支持动态渲染和扩展性。动态渲染包括变量、标签和过滤器的使用,实现内容根据上下文数据动态生成。模板继承和自定义标签则提升了扩展性,减少代码重复,增强可维护性。通过这些特性,Django模板系统助力开发者构建高效、动态的Web应用。
|
1月前
|
前端开发 JavaScript C++
【掰开揉碎】Django模板 vs 前端框架:选择合适的渲染方式
【掰开揉碎】Django模板 vs 前端框架:选择合适的渲染方式
|
1月前
|
Python
Django 模板:构建动态网页的关键
Django 模板:构建动态网页的关键
29 9
|
2月前
|
安全 数据库 开发工具
Django实战:从零到一构建安全高效的Web应用
Django实战:从零到一构建安全高效的Web应用
63 0