Django学习之 - 基础模板语言

模板语言循环
1:如果模板语言遇到列表,直接进行循环取值即可。
2:如果模板语言遇到字典进行循环有以下3种:
  - for item in dict.keys 只循环获取字典key
  - for item in dict.value 只循环获取字典value
  - for k,v in dict.items 循环获取字典的key,value全部。
实例url:fordict # 字典for循环的取值方法

1 userlist = {
2     ‘1‘: {‘name‘: ‘jack‘, ‘age‘: 36},
3     ‘2‘: {‘name‘: ‘anna‘, ‘age‘: 26},
4     ‘3‘: {‘name‘: ‘vivi‘, ‘age‘: 16},
5 }
6 def fordict(request):
7     return render(request,‘dict_for.html‘,{‘ulist‘:userlist})

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>循环字典</title>
 6 </head>
 7 <body>
 8 <div>
 9     {% for k in ulist.keys %}
10     <div>字典key:{{ k }}</div>
11     {% endfor %}
12     <hr />
13     {% for v in ulist.values %}
14     <div>字典value:{{ v }}</div>
15         {% for k1,v1 in v.items %}
16             <div>字典k - v: {{ k1 }} -- {{ v1 }}</div>
17         {% endfor %}
18     {% endfor %}
19     <hr />
20     {% for k,v in ulist.items %}
21     <div>字典k - v:{{ k }} - {{ v }}</div>
22     {% endfor %}
23 <hr />
24 <hr />
25     {% for k,v in ulist.items %}
26 {#    <div><a href="/detail?nid={{ k }}">{{ v.name }}</a></div>#}
27     <div><a href="/detail-{{ k }}.html">{{ v.name }}</a></div>
28     {% endfor %}
29 </div>
30 </body>
31 </html>

HTML

实例url:detail # 查看详情

 1 url写法
 2     # url(r‘^detail‘,views.detail),
 3     # url(r‘^detail-(\d+).html‘,views.detail), # 正则写法
 4     url(r‘^detail-(?P<nid>\d+).html‘,views.detail), # 正则分组写法
 5
 6 视图函数
 7 def detail(request,nid):
 8     # nid = request.GET.get(‘nid‘)
 9     curr_info = userlist[nid]
10     return render(request,‘detail.html‘,{‘detail_info‘:curr_info})

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>详细信息</title>
 6 </head>
 7 <body>
 8     <form action="/index" method="post">
 9         <input type="text" name="user" placeholder="用户名" />
10         <input type="text" name="email" placeholder="email" />
11         <input type="submit" value="提交" />
12     </form>
13     <ul>
14         {% for k,v in detail_info.items %}
15             <li>{{ k }} -- {{ v }}</li>
16         {% endfor %}
17     </ul>
18 </body>
19 </html>

HTML

3:模板继承(实例包含titil,css content,js)
实例:master.html 母版

 1 {% block func %}{% endblock %}
 2 <!DOCTYPE html>
 3 <html lang="en">
 4 <head>
 5     <meta charset="UTF-8">
 6     <title>{% block tital %}{% endblock %}</title>
 7     <link rel="stylesheet" href="/static/commons.css" />
 8     {% block css %}{% endblock %}
 9 </head>
10 <body>
11
12 <h1>母版继承</h1>
13 {% block content %}{% endblock %}
14 <script src="/static/jquery-1.12.4.min.js"></script>
15 {% block js %}{% endblock %}
16 </body>
17 </html>

母板

实例:slave.html 继承版

 1 {% extends ‘master.html‘ %}
 2 {% load func1 %}
 3 {% block tital %}继承版{% endblock %}
 4 {% block css %}
 5     <style>
 6         body{ background:#eeeeee}
 7     </style>
 8 {% endblock %}
 9 {% block content %}
10     <h2>继承版本</h2>
11     {% include ‘tag.html‘ %}
12     {% include ‘tag.html‘ %}
13     {% include ‘tag.html‘ %}
14     {% include ‘tag.html‘ %}
15     {% count 20 40 %}
16 {% endblock %}
17 {% block js %}
18     <script>alert(‘js继承‘)</script>
19 {% endblock %}

继承版

注意:继承一个网页只能继承一个模板
4:模板导入
在html文件中使用:{% include ‘tag.html‘ %} 可以将tag.html网页内容导入到文件中。
5:自定义函数
simple_tag
1:在app下创建templatetags目录
2:在此目录下建立任意xxx.py文件
3:在py文件中注册simple_tag,以下为固定写法,不能修改
  from django import template
  register = template.Library() # 创建template对象,
  @register.simple_tag
  def func(a1,a2,a3..):
    return "str..."
4:settings中注册app
5:在需要引入的html文件的顶部载入py文件,{% load xxx %}
6:html文件中使用:{% 函数名 arg1 arg2... %}
优点:支持多个参数传入
缺点:不能应用到条件判断中
filter
1:在app下创建templatetags目录
2:在此目录下建立任意xxx.py文件
3:在py文件中注册simple_tag,以下为固定写法,不能修改
  from django import template
  register = template.Library() # 创建template对象,
  @register.filter
  def func(a1,a2):
    return "str..."
4:settings中注册app
5:在需要引入的html文件的顶部载入py文件,{% load xxx %}
6:html文件中使用:{{ arg1|函数名:arg2 }}
优点:可以应用在条件判断中 {% if "china"|cstr:‘beijing‘ %} {% endif %}
缺点:只支持2个参数传入,不能加空格
如:simple_tag 和 filter

 1 from django import template
 2 register = template.Library()
 3 @register.simple_tag
 4 def count(a1,a2,a3):
 5     num = a1 + a2 + a3
 6     return num
 7 @register.filter
 8 def cstr(a1,a2):
 9     num = a1 + a2
10     return num
11 @register.filter
12 def power(a1):
13     return a1.upper()

html文件对应写法

1 {% load func1 %} # 导入py文件
2 <!DOCTYPE html>
3 <html lang="en">
4 <head></head>
5 <body>
6 {% count 10 20 %} # 对应simple_tag输出30
7 {{ "china"|cstr:‘beijing‘ }} # 对应filter输出chinabeijing
8 {{ ‘china‘|power }} #转换为大写
9 </body>

时间: 09-19

Django学习之 - 基础模板语言的相关文章

Django学习日记04_模板_overview

通过Django中的模板,使得设计人员和网站管理有一个对接的接口,实现网页设计和逻辑的分离,因此,模板会处理大量的文本解析内容,django中内部使用了高效的引擎来完成模板解析. 模板设置 在使用模板前,需要对django进行配置,在项目目录的setting.py中, TEMPLATES = [? ? {? ? ? ? 'BACKEND': 'django.template.backends.django.DjangoTemplates',? ? ? ? 'DIRS': [? ? ? ? ? ?

Django学习系列之模板系统

一.模板标签 if/else {%  if  %}标签检查一个变量的值是否为真或者等于另外一个值,如果为真,系统会执行{%  if  %}和{%  endif  %}之间的代码块,例如: {% if today_is_weekend %} <p>Welcome to the weekend!</p> {% endif %} {%  else  %}标签是可选的,如果不为真则执行{%  else  %}和{%  endif  %}之间的代码块 注意:一定要用{%  endif  %}

Django学习日记05_模板_模板语言

Variables 在模板中,使用两个大括号包含变量的方式来使用变量: {{ name }} 该变量应该作为键值对中的键,在Context中能被查找到. Tags 模板中使用Tags来进行简单的逻辑: {% commet %}? ? #body{% endcommet %} Django内置了大量的Tags: 1. if :使用if标签来实现分支逻辑 {%if option%}? ? #if body{%elif option2%}?? ? #elif body{%else%}?? ? #els

Django学习笔记4模板

1.页面的设计和Python的代码分离开会更干净简洁更容易维护. 我们可以使用 Django的 模板系统 (Template System)来实现这种模式, 模板是一个文本,用于分离文档的表现形式和内容. 模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签). 2.  模板通常用于产生HTML,但是Django的模板也能产生任何基于文本格式的文档.//若是安卓可以xml??? <!DOCTYPE html> <html> <head> <ti

Django模板语言小记

1.blog.views.py  # Create your views here. from django.template import loader,Context from django.http import HttpResponse from blog.models import BlogPost def archive(request):     posts = BlogPost.objects.all()     t = loader.get_template('archive.

Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识

JSP 是 Sun 公司提倡的一门网页技术标准.在 HTML 文件中,加入 Java 代码就构成了 JSP 网页,当 Web 服务器访问 JSP 请求的时候,首先执行其中的 Java 程序源码,然后以 HTML 形式返回, Java 程序运行在服务端,最终显示在客户端.JSP 源于 Java,因而 JSP 的运行环境依赖JDK,当然也需要服务器软件(例如 Tomcat 等). 一.运行环境搭建 1.安装 JDK,请参阅之前的博文:Java学习-001-JDK安装配置 2.Tomcat部署及环境变

C++ Primer 学习笔记_83_模板与泛型编程 --一个泛型句柄类

模板与泛型编程 --一个泛型句柄类 引言: [小心地雷] 这个例子体现了C++相当复杂的语言应用,理解它需要很好地理解继承和模板.在熟悉了这些特性之后再研究这个例子也许会帮助.另一方面,这个例子还能很好地测试你对这些特性的理解程度. 前面示例的Sales_item和Query两个类的使用计数的实现是相同的.这类问题非常适合于泛型编程:可以定义类模板管理指针和进行使用计数.原本不相关的Sales_item类型和 Query类型,可通过使用该模板进行公共的使用计数工作而得以简化.至于是公开还是隐藏下

Django 学习笔记(七)数据库基本操作(增查改删)

一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.py 5.同步数据 二.安装IPython方便debug sudo apt-get install ipython3 安装成功后用python manage.py shell 会自动进入Ipython交互解释器中,没有安装Ipython只有前两行代码,只进入到Python shell 中. Python 3.5

Ant学习-001-ant 基础知识及windows环境配置

一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.TestNG等搭建持续集成测试开发环境,从而高效.高质量的构建产品. Ant 有以下一些优点: 跨平台,可移植.Ant 是 Java 语言编写的,所以有很好的跨平台性和可移植性,无论是在 windows.Linux,还是 mac. 操作简单. Ant 是由一个内置任务和可选任务组成的,运行时需要一个构