内容回顾

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. python日志模块配置

    import logging logging.basicConfig(filename= 'out.log',filemode= 'w+', level= logging.DEBUG, format= ...

  2. java中包名命名规范

    在idea中创建package遇到的问题 发现一个问题,当我创建一个lesson-02的package时,输入这个包名后,package自动变成了文件夹 在网上搜索发下java包名一般是小写字母进行命 ...

  3. docker下部署jira破解版

    1. 制作Docker破解容器 在/opt/jira下新建一个Dockerfile文件 touch Dockerfile 编辑Dockerfile文件 vim Dockerfile FROM cpta ...

  4. virtualbox虚拟机之连接本地主机同时可以连接外部网络

    如果主机需要通过ssh,ftp等方式访问linux虚拟机,是无法实现的.这个时候要实现端口互通,我们要用到VirtualBox的端口转发功能.所谓的端口转发功能,就是借助主机上虚拟出来的Virtual ...

  5. 第24课 - #pragma 使用分析

    第24课 - #pragma 使用分析 1. #pragma简介 (1)#pragma 是一条预处理器指令 (2)#pragma 指令比较依赖于具体的编译器,在不同的编译器之间不具有可移植性,表现为两 ...

  6. openstack (共享组件) 时间同步服务

    云计算openstack共享组件——时间同步服务ntp(2)   一.标准时间讲解 地球分为东西十二个区域,共计 24 个时区 格林威治作为全球标准时间即 (GMT 时间 ),东时区以格林威治时区进行 ...

  7. 最火的开源 IDE介绍与安装教程

    导读:开发C/C++最好的IDE是什么,尤其对于很多初学者来说用什么IDE比较容易上手,本文将做以介绍,并为您演示如何下载与安装. 本文字数:1015,阅读时长大约:10分钟 (一)最火的开源IDE ...

  8. python中生成随机整数(random模块)

    1.从一个序列中随机选取一个元素返回:   random.choice(sep)    2.用于将一个列表中的元素打乱   random.shuffle(sep)    3.在sep列表中随机选取k个 ...

  9. MySQL手注之报错注入

    报错注入: 指在页面中没有一个合适的数据返回点的情况下,利用mysql函数的报错来创造一个显位的注入.先来了解一下报错注入常用的函数 XML:指可扩展标记语言被设计用来传输和存储数据. concat: ...

  10. sping ioc 源码分析(二)-- refresh()方法分析

    测试环境代码: @Configuration @ComponentScan("com.yang.xiao.hui.ioc") @Conditional(MyCondition.cl ...