内容回顾

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的更多相关文章

  1. pyhton框架Django之cookie和session

    一,cookie和session的理解 cookies 是浏览器为 Web 服务器存储的一小段信息. 每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies.它保存在浏览器下的某个文 ...

  2. day64 Pyhton 框架Django 07

    day67 内容回顾 视图 1. CBV 定义 from django.views import View class Addpub(View): def get(self,request): sel ...

  3. day63 Pyhton 框架Django 06

    内容回顾 1.装饰器 装饰器:是一个闭包函数,在不改变原函数的代码和调用方式的基础上,给原函数增加功能. def wrapper(func): def inner(*args,**kwargs): # ...

  4. day61 Pyhton 框架Django 04

    内容回顾 1.django处理请求的流程: 1. 在浏览器的地址栏输入地址,回车发get请求: 2. wsgi模块接收请求: 3. 在urls.py文件中匹配地址,找到对应的函数: 4. 执行函数,返 ...

  5. day60 Pyhton 框架Django 03

    day61 内容回顾 1.安装 1. 命令行: pip install django==1.11.18 pip install django==1.11.18 -i 源 2. pycharm sett ...

  6. day58 Pyhton 框架Django 01

    内容回顾 python基础    网路编程    并发编程    数据库    前端     osi7层           tcp/ip 5层模型    应用层    表示层             ...

  7. python运维开发(十七)----jQuery续(示例)web框架django

    内容目录: jQuery示例 前端插件 web框架 Django框架 jQuery示例 dom事件绑定,dom绑定在form表单提交按钮地方都会绑定一个onclick事件,所有查看网站的人都能看到代码 ...

  8. Web框架——Django笔记

    Web框架--Django笔记 MVC和MTV MVC:Model.View.Controller MTV:Model.Template.View Django--MTV 1.创建Django程序   ...

  9. Python3.5学习十八 Python之Web框架 Django

    Python之Web框架: 本质:Socket 引用wsgiref创建web框架 根据web框架创建过程优化所得: 分目录管理 模板单独目录 执行不同函数单独存入一个方法py文件 Web框架的两种形式 ...

随机推荐

  1. 在logback的fileNamePattern配置%i 带来的异常

    我在logback的配置文件中企图这样配置: <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPol ...

  2. Kubernetes中资源清单与Pod的生命周期(二)

    一.资源清单 1,定义: 在k8s中一般使用yaml格式的文件来创建符合我们预期的资源,这样的yaml被称为资源清单. 使用资源清单创建Pod: kubectl apply -f nginx.yaml ...

  3. 为什么ping不通google.com

    前言 为什么在ping不通Google的时候,我们却可以web直接访问Google (已开启SSR 翻 墙) SSR访问Google 因为GFW的限制导致国内无法直接访问谷歌,那么SSR为什么能绕过限 ...

  4. jackson序列化与反序列化的应用实践

    jackson序列化与反序列化的应用实践 源码地址: https://github.com/zhouweixin/serializable 1 相关概念 序列化: 把对象转换为字节序列的过程称为对象的 ...

  5. ulimit 的认识

    原文出自 通过 ulimit 改善系统性能 概述 系统性能一直是一个受关注的话题,如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件下保证程序的运作,ulimit 是我们在处理这些问题时 ...

  6. [LeetCode]Sql系列2

    题目 1205. 每月交易II Transactions 记录表 +----------------+---------+ | Column Name | Type | +-------------- ...

  7. JavaGuide易错点总结

    基础知识易错点 1. object.equals("str") 容易报空指针异常,应使用"str".equals(object); 还可以使用JDK7引入的工具 ...

  8. xml的复习

    xml的复习 1.概念:可扩展标记语言 2.功能: *存储数据    1.配置文件     2.在网络中传播 3.xml与html区别: xml语法严格,HTML语法松散 xml存储数据,HTML展示 ...

  9. 基于MAXIMO的发电行业EAM解决方案

    1. 行业背景 随着我国以“厂网分开,竞价上网”为特点的电力市场的起步和发展,发电厂.发电集团成为独立企业参与市场竞争,原有的“生产型”管理模式已经不再适应市场的需求.发电企业在重视安全质量.保证电力 ...

  10. Jmeter(二十四) - 从入门到精通 - JMeter函数 - 中篇(详解教程)

    1.简介 在性能测试中为了真实模拟用户请求,往往我们需要让提交的表单内容每次都发生变化,这个过程叫做参数化.JMeter配置元件与前置处理器都能帮助我们进行参数化,但是都有局限性,为了帮助我们能够更好 ...