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框架的两种形式 ...
随机推荐
- MySql 实现数组根据下标获取对应值逻辑(array[i]逻辑)
在使用sql模拟一段java逻辑开发时碰到有一段逻辑为从字符串数组中根据下标获取对应的值的情况,百度了一番没有发现有类似功能的函数和现成的实现方式,经过调试弄出来了,记录下来,以备参考 //举例:从数 ...
- 购书网站前端实现(HTML+CSS+JavaScript)
购书+阅读静态网页设计与实现 一.主页设计HTML 1.效果展示及实现 2.完整代码 二.主页样式布局CSS 三.空间功能实现Javascript 主要功能 Javascript完整代码: 总结 购书 ...
- jmeter压测以及用Badboy录脚本
一.压测时的基本配置: 1.设置线程数.延迟几秒.循环次数打勾表示一直去循环.调度器打勾可以填写持续时间.启动时间等 线程数:就是并发的用户数 N Ramp-Up Period(in second ...
- [LeetCode]678. 有效的括号字符串、20. 有效的括号(栈)
题目 678. 有效的括号字符串 给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串.有效字符串具有如下规则: 任何左括号 ( 必须有相应的右括号 ). 任何 ...
- Docker网络(五)
本章内容 1.dokcer默认自带的几种网络介绍 2. 自定义网络 3. 容器间通信 4. 容器与外界交互 docker网络分为单个主机上的容器网络和多个主机上的哇网络,本文主要讲解单个主机上的容器网 ...
- 用华为HMS ML kit人体骨骼识别技术,Android快速实现人体姿势动作抓拍
你有没有过这种体验,拍照时对着镜头,脑子一片空白.表情僵硬.手和脚无处安放,最后拍出来的照片很是奇怪.拍照软件中的固定姿势抓拍功能可以帮助你:选择一个你想要的姿势模板,当你摆出同款姿势时,软件会进 ...
- Golang的Context介绍及其源码分析
简介 在Go服务中,对于每个请求,都会起一个协程去处理.在处理协程中,也会起很多协程去访问资源,比如数据库,比如RPC,这些协程还需要访问请求维度的一些信息比如说请求方的身份,授权信息等等.当一个请求 ...
- python-文本操作和二进制储存
0x01 open方法 r read w write a append b byte test.txt内容为 yicunyiye wutang 读取test.txt f = open('test.tx ...
- 手把手教你在容器服务 TKE 上使用 LB 直通 Pod
什么是 LB 直通 Pod ? Kubernetes 官方提供了 NodePort 类型的 Service,即给所有节点开一个相同端口用于暴露这个 Service,大多云上 LoadBalancer ...
- GUI应用编程初体验
不同平台的GUI实现原理是一样的. 本实验基于 windos平台. 先捋一捋概念 什么是消息队列(Message Queue)假 设一个场景:系统正在处理WM_PAINT消息,就在这时用户在键盘上敲击 ...