1.Django的模板语言

1.{{ name }} -->变量
2.for循环:
{% for i inbook_list %}
{{ forloop.counter }}
{{ forloop.last }}
{{i}}
{% endfor %}
3. if判断
{% if 10>5 %}
...
{% else %}
...
{% endif %}
4.if ... in 判断
{% if name in name_list %}
...
{% else %}
...
{% endif %}
2. for循环
1. for循环的基本用法:
{% for i in name_list %}
{{ i }}
{% endfor %}

{% for i in name_list %}
{{ i }}
{% empty %}
空空如也
{% endfor %}

2. for循环可用的属性:
forloop.counter
forloop.counter0
forloop.revcounter
forloop.revcounter0

forloop.first
forloop.last

forloop.parentloop --> 两层for循环,内层循环引用外层循环

2. filter
1. 常用的内置filter
1. length
2. filesizeformat --> 格式化文件大小的
3. date:'Y-m-d H:i:s' --> 格式化时间的
4. slice
5. safe --> XSS攻击(跨站脚本攻击)
6. truncatechars:20 --> 截取字符,超过的用...表示
7. default

2. 自定义的filter
示例:
1. addsb
2. addstr
具体的实现方式:
1. 定义阶段
1. 在app下面新建一个python的包:templatetags
2. 在上面的Python包中新建一个Python文件,名字随意
3. 在上述python文件中:
from django import template

# 生成一个注册用的实例
register = template.Library()
# 定义并注册一个自定义的filter函数
@register.filter(name='addsb')
def add_sb(arg):
return "{} sb".format(arg)
2. 调用阶段:
1. 在Django的模板文件中,导入刚才新建的python文件
{% load py文件名 %}
2. 按照filter的语法调用
{{ name|addsb }}

2 母版和继承
1. 为什么要有模板和继承:
把多个页面公用的部分提取出来,放在一个 母版 里面。
其他的页面只需要 继承 母版就可以了。
2. 具体使用的步骤:
1. 把公用的HTML部分提取出来,放到base.html文件中
2. 在base.html中,通过定义block,把每个页面不同的部分区分出来
3. 在具体的页面中,先继承母版
4. 然后block名去指定替换母版中相应的位置

3. 使用母版和继承的注意事项:
1. {% extends 'base.html' %} --> 母版文件:base.html要加引号
2. {% extends 'base.html' %}必须放在子页面的第一行!!!
3. 可以在base.html中定义很多block,通常我们会额外定义page-css和page-js两个块
4. view.py相应的函数中返回的是对应的子页面文件 不是不是不是 base.html
2. 组件
{% include 'xxx.html'%}

3. 静态文件的灵活写法
1.
{% load static %}
{% static 'jQuery-3.3.1.js' %}
2. {% get_static_prefix %}jQuery-3.3.1.js

4. 自定义simple_tag和inclusion_tag

比filter高级一点点
它可以接受的参数个数大于2

5. 自定义的inclusion_tag
用来返回一段html代码(示例:返回ul标签)

1. 定义阶段
在app下面新建templatetags 文件夹(注意是Python包)
新建一个py文件

from django import template
# 生成注册示例,名字必须是register
register = template.Library()
@register.inclusion_tag("ul.html")
def show_ul(num):
num = 1 if num < 1 else int(num)
data = ["第{:0>3}号技师".format(i) for i in range(1, num+1)]
return {"data": data}

2. 调用阶段
{% load xx %}
{% show_ul 10 %}

3.视图

1. 视图(接收请求返回响应那部分)
1. CBV(class base view)和FBV(function base view)

2. request对象

1. request.method --> 获取请求的方法(GET、POST等)
2. request.GET --> 通常用来获取URL里面的参数
127.0.0.1:8000/edit_book/?id=1&name=yimi
request.GET --> {"id":1, "name":"yimi"}
request.GET.get("id")
3. request.POST --> 用来获取POST提交过来的数据
request.POST.get("book_name")
2. 补充其他常用的:
1. request.path_info --> 获取用户请求的路径(不包含IP和端口和URL参数)
2. request.body

3. response
基础必备三件套(求学要严谨)
1. HttpResponse --> 返回字符串内容
2. render --> 返回一个html页面
3. redirect --> 返回一个重定向(告诉浏览器再去访问另外的网址)

4. JsonResponse

2. 路由系统(urls.py) http://www.cnblogs.com/liwenzhou/p/8271147.html
1. 正则表达式的模糊匹配
2. 分组匹配 --> 相当于给视图函数传递位置参数
3. 分组命名匹配 --> 相当于给视图函数传递关键字参数
(两个不要混合使用)

---------------------------- 这里是坎 ------------------------------------

4. 反向解析URL
本质上就是给url匹配模式起别名,然后用过别名拿到具体的URL路径

1. 怎么起别名?
在url匹配模式中,定义name="别名"
2. 如何使用?
1. 在模板语言里面使用:
{% url "别名" %} --> 得到具体的URL路径
2. 在视图中如何使用:
from django.urls import reverse

reverse("别名") --> 得到具体的URL路径
3. 如何传参数?
1. 模板语言中:
{% url "别名" 2018 "nb" %}
2. 视图函数中
传位置参数:
reverse("别名", args=(2018, "nb"))

传关键字参数:
reverse("别名" kwargs={"year": 2018, "title": "nb"})
4. namespace
为了防止不同的app下面的url匹配模式有重复的别名

转载于:https://www.cnblogs.com/l-jie-n/p/9660434.html

Django模板语言及视图相关推荐

  1. Django模板语言(译)

    原文地址:https://docs.djangoproject.com/zh-hans/2.1/ref/templates/language/ 翻译日期:2019年3月8日-2019年3月9日 by: ...

  2. 小白必看!Django 模板语言基础来啦

    作者 | 单雨 责编 | 胡巍巍 出品 | CSDN(ID:CSDNnews) 前言 为了实现模板封装和复用,提高HTML界面调试便捷性以及前后端解耦等目标,Django定义了自己的网络模板语言. 当 ...

  3. Django模板语言 以及使用

    Django 模板语言 文章目录 Django 模板语言 模板的传参 模板的变量 XSS攻击 反射型xss 存储型xss DOM xss 模板的标签 过滤器 模板的继承 url 反向解析 模板的传参 ...

  4. Django模板语言相关内容

    Django模板语言相关内容 Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 在Django的模板语言 ...

  5. 轻松搞定 Django 模板语言进阶!

    作者 | 单雨 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 模板继承 简介 模板继承允许你建立一个基本的"骨架"模板, 它包含了网站中所有常见的元素,并定义了可以 ...

  6. Django模板语言

    常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} 变量名由字母数字和下划线组成. 点(.)在模板语言中有特殊的含义, ...

  7. Django(模板语言-自定义filter和simple_tag)

    filter过滤器的主要形式:变量|函数,意思是将变量交给函数处理,而自定义filter就是自己定义函数,因为用到已有的很少. 1.在当前app中创建templatetags模块(包:带__init_ ...

  8. Django模板语言中的自定义方法filter过滤器实现web网页的瀑布流

    模板语言自定义方法介绍 自定义方法注意事项 Django中有simple_tag 和 filter 两种自定义方法,之前也提到过,需要注意的是 扩展目录名称必须是templatetags templa ...

  9. Django模板语言-1:一个完整的数据获取例子

    一.Django表单(form)请求: 打开的时候默认是GET请求,获取form表单的内容. 点提交的时候是POST请求,提交form表单的内容. 根据以上区别来编写获取表单内容: from djan ...

最新文章

  1. 搭建Windows Server 2008故障转移群集
  2. 动态记忆网络:向通用 NLP 更近一步
  3. 自定义mysql8.0安装路径
  4. python中如何调用类_python如何调用java类
  5. 16 | 基础篇:怎么理解内存中的Buffer和Cache?
  6. 在PAT上提交Java代码
  7. LeetCode 2063. 所有子字符串中的元音(数学)
  8. 《Reids 设计与实现》第十九章 慢查询日志
  9. java B2B2C Springboot仿淘宝电子商城系统-spring cloud 跨域访问
  10. mysql数据库MyISAM存储引擎_MySQL数据库MyISAM存储引擎
  11. 2022年信息安全工程师考试知识点:计算机网络基本知识
  12. 【JavaScript问题】JavaScript 请求后台报错 Invalid character found in the request target
  13. PS创意合成苹果橘子
  14. NoteExpress引用文献出现ADDIN NE.Ref.
  15. 推荐几个免费的PDF to Word文件转换器
  16. 22-0002 天猫店铺搜索页面分析
  17. 彻底掌握 Promise-原生Promise的实现(二) Promise的链式调用
  18. 调用腾讯云OCR接口识别身份证和户口本
  19. Springboot、React集成Okta SAML2单点登录
  20. 30个物联网传感器小实验6:人体感应器

热门文章

  1. 【java笔记】字符编码和字符集
  2. 【动态规划笔记】动态规划初始化细节问题:恰好装满背包
  3. 最简单的基于FFmpeg的移动端例子:IOS 视频解码器
  4. win10samba服务器配置_win10访问samba配置共享目录,踩坑记
  5. idea插件sonar字体背景颜色修改
  6. a标签 href和onclick 传递的this区别
  7. UVA1583 - Digit Generator
  8. 计算机通信技术的应用发展研究,计算机通信技术的发展与应用总结
  9. 小学用计算机画画的课件,用计算机画图画.ppt
  10. 如何将整个splitcontainer控件缩小_将绣球花养成花球,整个夏天都是花团锦簇,教你如何将它调成蓝色...