内容回顾

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. pwnable.kr之fd

    题目如图: 在终端输入:ssh fd@pwnable.kr -p2222 连接到远程终端,如图: 输入ls -l,查看文件: 输入whoami,查看自身用户名称: 根据题目意思我们只要打开flag文件 ...

  2. Hexo博客迁移

    Hexo用户指南 - 博客迁移 GitHub+Hexo搭建博客的过程比较平滑,但是它的配置却非常耗时,一旦电脑出现问题或者需要在另外一台电脑上写博客,那么Hexo博客的迁移非常就让人头疼.下面参考其他 ...

  3. 微信开发者工具集成GitHub,多人协调开发,上传拉取等

    一,准备环境 1,提前安装git环境和GitHub做集成,不做多解释: 1,准备微信项目代码: 2,创建GitHub仓库: 二,创建GitHub仓库 1,创建一个空的GitHub仓库,不要任何文件和不 ...

  4. Openstack 调整云主机大小失败解决

    Openstack 使用调整openstack云主机大小报错 tailf /var/log/nova/nova-compute.log 2017-02-24 18:21:29.088 28511 ER ...

  5. Windows10 安装 CUDA + cuDNN + pyTorch

    2020/5/29 在 windows10 上面安装 CUDA 和 cuDNN 0.简单了解一下 CUDA 和 cuDNN 1)什么是 CUDA CUDA(ComputeUnified Device ...

  6. HTTP 【值得你看个究竟】

    我是一名程序员,我的主要编程语言是 Python,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟.醍醐灌顶的感觉. 认识 ...

  7. TS数据类型:类型别名/联合类型/字面量类型/类型推论等纲要

    在学C/C++  Java等强类型语言时,变量类型是唯一的,需要先指定.PHP JavaScript等弱类型语言时,无需指定变量类型 但是,TypeScript里面的联合类型 (Union Type) ...

  8. yml文件

    博文内容来自https://blog.csdn.net/chang_li/article/details/78667652 项目里用到yml文件作为配置文件,了解下其实挺简单,它的基本语法如下 大小写 ...

  9. JMeter5.0在windows(含插件安装)

    一.jmeter下载 前提:已经安装jdk8+ jmeter下载地址:http://jmeter.apache.org/download_jmeter.cgi 有Binaries和Source版本 前 ...

  10. Prometheus-Alertmanager告警对接到企业微信

    之前写过将Prometheus的监控告警信息通过Alertmanager推送到钉钉群. 最近转移了阵地,需要将Prometheus监控告警信息推送到企业微信群,经过两天的摸索,以及查了网上的一些资料, ...