day62 Pyhton 框架Django 05
内容回顾
1.变量
render(request,'模板文件名',{ k1:v1 })
{{ k1 }}
{{ list.0 }} {{ dict.key }} {{ dict.keys }} {{ dict.values }}
{{ p1 }} {{ p1.name }} {{ p1.eat }}
2.过滤器
{{ value|filter }} {{ value|filter:参数 }}
内置的过滤器:
default 默认值 {{ value|default:’nothing‘}}
title
add
slice {{ value|slice:’1:2:2‘}}
length 长度
filesizesformat
first last
date {{ now|date:'Y-m-d H:i:s' }}
safe 不做转义
3.tags
{% %}
{% for i in list %}
{{ forloop }}
{{ i }}
{% endfor %}
{% for i in list %}
{{ i }}
{% empty %}
空空如也
{% endfor %}
{% if 条件 %}
{% elif 条件%}
{% else %}
{% endif %}
注意:1.不支持连续判断
1. 不支持算数运算 + - * /
4.母板和继承 ***
定义母板: base.html
写一个HTML文件,提取多个页面的公共部分,在页面中定义block块。
继承:
写子页面,第一行写 {% extends 'base.html' %},重写block块。
注意的内容:
1. {% extends 'base.html' %} 写在第一行 'base.html'加上引号
2. 要修改的内容写在block块中
3. 多写点block块 css js
5.组件
组件:一小段写死的HTML代码
使用:{% include ’nav.html‘ %}
6.csrf_token
将{% csrf_tonken %}写在from表中,name=csrfmiddlewaretoken
今日内容:
1.装饰器
装饰器:在不改变原函数的代号和调用方法的基础上,给原函数额外增加工功能。
def warpper(func):
def inner(*args,**kwargs):
# 原函数执行之前的操作
ret = func(*args,**kwargs)
# 原函数执行之后的操作
return ret
return inner
@warpper # xxx = warpper(xxx)
def xxx(*args,**kwargs):
xxx(*args,**kwargs)
带参数的装饰器:
def outer(flag):
def timer(func):
def inner(*args, **kwargs):
ret = func(*args, **kwargs)
if flag:
print(time.time())
return ret
return inner
return timer
多个装饰器装饰一个函数:
def wrapper1(func):
def inner(*args, **kwargs):
print('wrapper1 前')
ret = func(*args, **kwargs)
print('wrapper1 后')
return ret
return inner
def wrapper2(func):
def inner(*args, **kwargs):
print('wrapper2 前')
ret = func(*args, **kwargs)
print('wrapper2 后')
return ret
return inner
@wrapper2 # func1 =wrapper2(func1) wrapper2.inner
@wrapper1 # func1 =wrapper1(func1) wrapper1.inner
def func1():
print('func1')
装饰器的修复技术
from functools import wraps
def w1(func):
@wraps(func)
def inner(*args, **kwargs):
print('wrapper1 前')
ret = func(*args, **kwargs)
print('wrapper1 后')
return ret
return inner
2.自定义的方法
自定义filter
定义
1. 在app下创建一个名叫templatetags的python包
2. 在包内创建py文件
3. 在py文件中写:
from django import template
register = template.Library()
4. 写函数
def add_sb(value, arg):
return '{}_{}_sb'.format(value, arg)
5. 给函数加装饰器
@register.filter
def add_sb(value, arg):
使用:
{% load my_tags %}
{{ 'alex'|add_sb:'very' }}
{% if 'alex'|add_sb:'big' == 'alex_big_sb' %}
zhen
{% endif %}
自定义simple_tag
定义:
前3步同上
1. 写函数(函数参数不受限制),加装饰器
@register.simple_tag
def str_join(*args, **kwargs):
print(args)
print(kwargs)
return "-".join(args) + '*'.join(kwargs.values())
使用:
{% load my_tags %}
{% str_join 'k1' 'k2' 'k3' k1='v1' k2='v2' %}
自定义inclusion_tag
返回一个动态的代码段
定义:
前3步同上
1. 写函数加装饰器
@register.inclusion_tag('li.html')
def show_li(num):
return {'num': range(num)}
1. 写模板(li.html)
<ul>
{% for foo in num %}
<li> {{ foo }}</li>
{% endfor %}
</ul>
使用:
{% load my_tags %}
{% show_li 10 %}
3.静态文件相关
{% load static %}
<link rel="stylesheet" href="{% static 'plugins/bootstrap-3.3.7/css/bootstrap.css' %}">
<link rel="stylesheet" href="{% static 'css/dsb.css' %}">
{% get_static_prefix %} 获取静态文件的别名
day62 Pyhton 框架Django 05的更多相关文章
- pyhton框架Django之cookie和session
一,cookie和session的理解 cookies 是浏览器为 Web 服务器存储的一小段信息. 每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies.它保存在浏览器下的某个文 ...
- day64 Pyhton 框架Django 07
day67 内容回顾 视图 1. CBV 定义 from django.views import View class Addpub(View): def get(self,request): sel ...
- day63 Pyhton 框架Django 06
内容回顾 1.装饰器 装饰器:是一个闭包函数,在不改变原函数的代码和调用方式的基础上,给原函数增加功能. def wrapper(func): def inner(*args,**kwargs): # ...
- day61 Pyhton 框架Django 04
内容回顾 1.django处理请求的流程: 1. 在浏览器的地址栏输入地址,回车发get请求: 2. wsgi模块接收请求: 3. 在urls.py文件中匹配地址,找到对应的函数: 4. 执行函数,返 ...
- day60 Pyhton 框架Django 03
day61 内容回顾 1.安装 1. 命令行: pip install django==1.11.18 pip install django==1.11.18 -i 源 2. pycharm sett ...
- day58 Pyhton 框架Django 01
内容回顾 python基础 网路编程 并发编程 数据库 前端 osi7层 tcp/ip 5层模型 应用层 表示层 ...
- python运维开发(十七)----jQuery续(示例)web框架django
内容目录: jQuery示例 前端插件 web框架 Django框架 jQuery示例 dom事件绑定,dom绑定在form表单提交按钮地方都会绑定一个onclick事件,所有查看网站的人都能看到代码 ...
- Web框架——Django笔记
Web框架--Django笔记 MVC和MTV MVC:Model.View.Controller MTV:Model.Template.View Django--MTV 1.创建Django程序 ...
- Python3.5学习十八 Python之Web框架 Django
Python之Web框架: 本质:Socket 引用wsgiref创建web框架 根据web框架创建过程优化所得: 分目录管理 模板单独目录 执行不同函数单独存入一个方法py文件 Web框架的两种形式 ...
随机推荐
- 解锁用户scott并授权
请输入用户名: system 输入口令: 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Producti ...
- MyBatis的逆向工程、Example类
public void testFindUserByName(){ //通过criteria构造查询条件 UserExample userExample = new UserExample(); us ...
- 163net邮箱,对商务办公人士有哪些帮助?
在职场当中,无论是沟通交流,还是文档对接,电子邮箱都是是必不可少的办公助手,163net付费邮箱作为很多人的首选工作邮箱,相较于免费邮箱而言,究竟有哪些优势呢? 1. 专属网络空间,有容 ...
- 浅谈DOM事件的优化
在 JavaScript 程序的开发中,经常会用到一些频繁触发的 DOM 事件,如 mousemove.resize,还有不是那么常用的鼠标滚轮事件:mousewheel (在 Firefox 中,滚 ...
- JS -- JavaScript简介
JavaScript是一种属于网络的高级脚本语言(解释性脚本语言),已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果. 一.如何插入JS代码? 使用&l ...
- xss构造--如何使用xss语句
XSS的构造 1.利用[<>]构造html/js 如[<script>alert(/xss/)</script>] 2.伪协议 使用javascript:伪协议来构 ...
- [LeetCode]287. 寻找重复数(二分)
题目 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数.假设只有一个重复的整数,找出这个重复的数. 示例 1: 输入: [ ...
- Linux常用命令详解(2)
aliasunaliasunamesuhostnamehistorywhichwcwwhowhoamipingkillseqdudffreedate 命令详解 1. alias 设置.’查看别名 实例 ...
- Spring boot +Thymeleaf 搭建springweb
对接天猫精灵的时候需要有网关服务器方提供几个页面,服务器已经有了,spring boot的 纯后台的,就加了Thymeleaf jar包添加几个页面跳转 maven配置 <!-- 引入thy ...
- RXJAVA之概述
RXjava是一个异步和基于事件的程序库.RXjava的核心理念是编程风格的的变化,从传统的命令式程序改变到函数响应式编程. RXjava的基本概念: Observable:发射源,即对象产生的地方. ...