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框架的两种形式 ...
随机推荐
- [Python]打印指定目录下所有子目录
import os for root,dirs,files in os.walk(r"/home/os-hy01"): for dir in dirs: print(dir) -- ...
- jenkins打包前端项目报 error: index-pack died of signal 15 问题解决
jenkins打包前端项目报 error: index-pack died of signal 15 问题解决 前几天用jenkins打包一个前端项目的时候出现了 error: index-pack ...
- python基础四(json\os\sys\random\string模块、文件、函数)
一.文件的修改 文件修改的两种思路: 1.把文件内容拿出来,做修改后,清空原来文件的内容,然后把修改过的文件内容重新写进去. 步骤: 1.打开文件:f=open('file','a+') #必须用a ...
- django之安装和项目创建
dos界面下安装django 自动下载和安装:cmd:pip3 install django 手动安装: 1.登录django官网下载django 2.下载地址:https://www.django ...
- defer implement for C/C++ using GCC/Clang extension
前述: go 中defer 给出了一种,延时调用的方式来释放资源.但是对于C/C++去没有内置的这种属性.对于经常手动管理内存的C/C++有其是C程序员这种特性显得无比重要.这里给出了一种基于GCC/ ...
- Envoy 代理中的请求的生命周期
Envoy 代理中的请求的生命周期 翻译自Envoy官方文档. 目录 Envoy 代理中的请求的生命周期 术语 网络拓扑 配置 高层架构 请求流 总览 1.Listener TCP连接的接收 2.监听 ...
- hystrix源码之线程池
HystrixThreadPool 定义了hystrix线程池接口 获取ExecutorService对象,即jdk定义的线程池. public ExecutorService getExecutor ...
- 3.ConcurrentMap-并发Map
- Elasticsearch安装、原理学习总结
ElasticSearch ElasticSearch概念 Elasticsearch是Elastic Stack核心的分布式搜索和分析引擎. 什么是Elastic Stack Elastic Sta ...
- 关于Apache报错 couldn't perform authentication. AuthType not set!
今天在使用apache搭建yum的web服务时,配置完成后.访问http://ip 时,浏览器报错:500 Internal Server Error 然后查询error.log发现,有如下错误提示: ...