03-Django模板

d:\python\demo1

目标

  • 变量
  • 分支 if/else
  • 循环 for
  • 判断 ifequal/ifnotequal标签
  • 过滤器 管道命令
  • 算术运算
  • include 标签
  • 注释标签

准备

views.py,增加一个新的对象render(递交/提交之意),用于向模板提交数据:

from django.shortcuts import render

1-变量

变量使用了双括号
1)demo1/templates/hello.html 文件代码:

{{ hello }}

2)views.py增加如下代码

def hello(request):
    context          = {}
    context['hello'] = 'Hello World!'
    return render(request, 'hello.html', context)

3)urls.py关键代码

from django_web.views import index #导入views.py文件中的index函数
from django_web.views import hello #导入views.py文件中的hello函数
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', index), #在url中凡是以url开头的访问都使用index函数来处理该请求
    url(r'^hello/', hello),
]

4)termainal输入

python manage.py runserver

5)http://localhost:8000/hello/

2-分支 if/else

基本语法格式如下:

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

或者:

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

修改上面的程序views.py,再传递一个数字型的变量值,假设为学生成绩

def hello(request):
    ##创建一个字典对象
    context = {}
    context['hello'] = 'Hello World!'
    context['var'] = 85
    return render(request, 'hello.html',context)

hello.html增加以下代码

{% if var >= 90 %}
    

{% elif var < 90 and var >= 80 %}

{% else %}

其他

{% endif %}

运行看效果http://localhost:8000/hello/

image.png

3-循环 for

** 语法 **
{% for athlete in athlete_list reversed %}
...
{% endfor %}

views.py新增

context['TutorialList']=["HTML", "CSS", "jQuery", "Python", "Django"]

hello.html新增

{% for i in TutorialList %}
{{ i }}
{% endfor %}

4-判断 ifequal/ifnotequal标签

语法
{% ifequal user currentuser %}

Welcome!


{% endifequal %}

hello.html

{% ifequal var 85 %}
85分
{% endifequal %}

{% ifnotequal var 86 %}
不是86
{% endifnotequal %}

5-过滤器 管道命令

模板过滤器可以在变量被显示前修改它,过滤器使用管道字符,如下所示:

{{ name|lower }}

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

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

{{ my_list|first|upper }}

以上实例将第一个元素并将其转化为大写。

有些过滤器有参数。 过滤器的参数跟随冒号之后并且总是以双引号包含。 例如:

{{ bio|truncatewords:"30" }}

这个将显示变量 bio 的前30个词。

其他过滤器:

addslashes : 添加反斜杠到任何反斜杠、单引号或者双引号前面。
date : 按指定的格式字符串参数格式化 date 或者 datetime 对象,实例:
{{ pub_date|date:"F j, Y" }}
length : 返回变量的长度。

6-算术运算

加法:

{{ value|add:10}} 

value=5,则返回15
减法:

 {{value|add:-10}}

value=5,则返回-5,这个比较好理解,减法就是加一个负数

乘法:

{%  widthratio 5 1 100 %}

上面的代码表示:5/1 *100,返回500,widthratio需要三个参数,它会使用 (参数1)除以(参数2)乘以(参数3),所以要进行乘法的话,就将参数2设置为1即可
除法:

{%  widthratio 5 100 1 %}

上面的代码表示:5/100*1,返回0.05,只需要将第三个参数设置为1即可
求余:

{% value|divisibleby:2 %}

value=11,则返回False,value=10,则返回True

7-include 标签

注意:双引号不可省略,否则报错
{% include "nav.html" %}

8-注释标签

Django 注释使用 {# #}。
{# 这是一个注释 #}

更多Django标签,查阅官方文档(英文)
https://docs.djangoproject.com/en/2.0/ref/templates/builtins/

你可能感兴趣的:(03-Django模板)