'''
# 1. 通过ChangeList封装好多数据
# 2. 销售中公共资源:Q查询,3天 15天
from django.db.models import F,Q
F 使用查询条件的值,专门取对象中某列值的操作
models.User.objects.update(age=F('age')+1)
Q对象常用于实现搜索功能,常配合双下划綫查询使用
| is or, & is and ~ 表示否定
q1=models.Book.objects.filter(Q(title__startswith='P')).all()
Q对象组合使用可以产生一个新对象
Q(title__startswith='P') | ~Q(pub_date__year=2005) Q对象可以与关键字参数查询一起使用,不过一定要把Q对象放在关键字参数查询的前面。
Book.objects.get(
Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6)),
title__startswith='P')
# 3. 使用yield实现
# - 生成器函数,对数据进行加工处理
# - __iter__和yield配合
# 4. 获取Model类中的字段对from django.db.models import F应的对象
# class Foo(model.Model):
# xx = models.CharField()
#
# Foo.get_field('xx')
#
# 5. 模糊搜索功能
# 使用Q方法
# 6. Type创建类
# type时所有元类的父亲
object是type(object的类型是type),type也是object(type继承自object)
>>> isinstance(object, type)
True
>>> isinstance(type, object)
True
在python中一切皆object,所有对象都是从object继承而来的,type也是object,而object的type是type
>>> type.__base__
<type 'object'>
>>> type(object)
<type 'type'> 1、type是一切type的类型
2、object是所有对象的基类,type也继承自object
3、object的type是type 去掉object所有对象都不能用了,而去掉type,所有对象还是可以正常运作的,只是没有一个东西标识他的类型了
# 7. 自动派单
# - 原来在内存中实现,问题:重启和多进程时,都有问题。
# - redis
# - 状态
# - 原来数据(权重表 权重和个数)
# - pop数据
# 8. 使用 list_diplay配置
# list_display = [函数名,]
#
# 9. reverse反向生成URL
#使用方法:
def index(request):
from django.urls import reverse
test_url = reverse('xx')
print(test_url)
return HttpResponse("进入index") def text(requext):
return HttpResponse("进入text") urlpatterns = [
url(r'^index/', index,),
url(r'^text/dasd/asd/asd/sad/asd/as/d', text,name='xx'),
]
# 10. 模板
# 为了减少重复代码而使用模板
命名为base.html,这个页面主要放公用部分的代码,各个子页面都可以继承这个页面的样式。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}首页{% endblock %}</title>
{% block js %} {% endblock %}
{% block css %} {% endblock %}
</head>
<body>
{% block content %}{% endblock %}
</body>
</html> 如下所示,{% extends ‘base.html’ %}作为基础模板,必须放在第一行才可以识别。
{% block %}这个标签,告诉模板引擎,子模板可以重载这些
{% include %}允许模板中包含其他模板。
注意css和js等静态文件,是和html不同的识别方式。
{% extends 'base.html' %} <!-- 该页面不允许出现js以及css代码,content代码可直接写在本文件中,下面只是content的实例代码 -->
{% block title %}
<!-- 此处写页面标题 -->
{% endblock %} {% block js %}
<!-- 此处填充js链接 -->
<script type="text/javascript" src="..."></script>
{% endblock %} {% block css %}
<!-- 此处填充css链接 -->
{% endblock %} {% block content %}
<!-- 此处填充页面主体内容 -->
{% include 'taskApp/cjjdglContent.html' %}
{% endblock %}
# 11. ready方法定制起始文件
# - 文件导入实现单例模式
# 12. inclusion_tag
# 一种比较普遍的tag类型是只是渲染其它模块显示下内容,这样的类型叫做Inclusion Tag。
@register.inclusion_tag('link.html', takes_context=True)
def jump_link(context):
return {
'link': context['home_link'],
'title': context['home_title'],
}
# 13. 中间件的使用
# 什么是 middleware?
Middlewares 是修改 Django request 或者 response 对象的钩子. 什么时候使用middleware
1.多个网页的登录权限认证时
2.如果你想修改请求,例如被传送到view中的HttpRequest对象。 或者你想修改view返回的HttpResponse对象,这些都可以通过中间件来实现。
3.可能你还想在view执行之前做一些操作,这种情况就可以用 middleware来实现。 Django还有一些默认的middleware比如:
AuthenticationMiddleware
还有更多的都可以在shting中配置 使用middleware时应该记住的东西!
middleware的顺序非常重要
一个middleware只需要继承object类
一个middleware可以实现process_request(方法) 给两个middleware添加process_request方法
class AnotherMiddleware(object):
def process_request(self, request):
print "Another middleware executed" def process_response(self, request, response):
print "AnotherMiddleware process_response executed"
return response class BookMiddleware(object):
def process_request(self, request):
print "Middleware executed"
print request.user
return HttpResponse("some response")
#self._start = time.time() def process_response(self, request, response):
print "BookMiddleware process_response executed"
return response # 15. importlib + getattr
######setting.py#####
MESSAGE_CLASSES = [
'utils.message.email.Email',
'utils.message.msg.Msg',
'utils.message.wx.WeChat',
'utils.message.dingding.DingDing',
]
##.py
import importlib #动态导入模块
from django.conf import settings
for cls_path in settings.MESSAGE_CLASSES:
# cls_path是字符串
module_path,class_name = cls_path.rsplit('.',maxsplit=1)
m = importlib.import_module(module_path)
obj = getattr(m,class_name)()
obj.send(subject,body,to,name,)
#
# 16. FilterOption,lambda表达式
#lanmbda是一个匿名函数
它可以通过传给reduce中的函数(必须是二元函数)
依次对数据集中的数据进行操作。
from functools import reduce
list=[i for i in range(1,101)]
a=reduce(lambda x,y:x+y,list)
print(a)
# 17. QueryDict
# - 原条件的保留
# - filter
# 18. ModelForm
#from django.forms import Form,ModelForm,fields,widgets as wd
class QueModelForm(ModelForm):
class Meta:
model=models.Question #
fields=['caption','tp']
error_messages = {
'caption':{'required':'名称不等为空','invalid':'格式错误'},
'tp':{'required':'名称不等为空','invalid':'格式错误'}
}
widgets = {
'caption':wd.TextInput(attrs={'class':'form-control',}),
# 'tp':wd.TextInput(attrs={'class':'form-control'})
} class UserTypeModeForm(ModelForm):
title = fields.CharField(max_length=6,required=True,widget=wd.Textarea()) class Meta:
model = models.UserType
fields = "__all__" error_messages = {
'title':{'required':'名称不能为空','invalid':'格式错误'}
}
widgets = {
'title':wd.TextInput(attrs={'class':'c1'})
} # 19. 面向对象的 @property @classmethod
#staticmethod和classmethod的作用:
一般来说,要使用某个类的方法,需要先实例化一个对象在调用方法。
而使用@staticmethod或classmethod,就可以不需要实例化,直接类名.方法名来调用。
这有利于组织代码,把某些应该属于某个类的函数给放到那个类里,同时有利于代码整洁 区别:
@staticmethod不需要表示自身对象的self和自身类的cla参数,就跟使用函数一样
@classmethod也不需要self参数,但第一个参数需要表示自身类的cls参数 class A():
cap='A'
def foo(self):
print('B')
@staticmethod
def static_cap():
print('static')
print(A.cap)
A().foo()
@classmethod
def class_foo(cls):
print('class')
print(cls.cap)
cls().foo() print(A.cap)
# A.static_cap()
# A.class_foo() @property:方法调用时不用加括号
# 20. mark_safe
何谓转义?就是把html语言的关键字过滤掉。例如,<div>就是html的关键字,如果要在html页面上呈现<div>,其源代码就必须是&lt;div&gt;
PS:转义其实就是把HTML代码给转换成HTML实体了!
默认情况下,django自动为开发者提供escape功能,即在html代码render之前,先进行转义,然后再呈现出来。
这样的话,我们如果想输出一个链接,被转义之后,可能就无法得到我们想要的结果。
1.使用mark_safe函数标记后,django将不再对该函数的内容进行转义
2.在template中 可以使用 {{ data|safe }}
3.在自定义模板语法中可以:把is_safe属性设置为Ture
@register.filter def myfilter(value): return value myfilter.is_safe = True
#
# 21. 抽象方法抽象类+raise Im...
##base.py
#####方法一######
from abc import ABCMeta
from abc import abstractmethod class BaseMessage(metaclass=ABCMeta): @abstractmethod
def send(self,subject,body,to,name):
pass ########方法二#######
class BaseMessage(object):
def send(self, subject, body, to, name):
raise NotImplementedError('未实现send方法') #######dingding.py#########
from .base import BaseMessage class DingDing(BaseMessage):
def __init__(self):
pass def send(self,subject,body,to,name):
print('钉钉消息发送成功')
# 22. 组件中的装饰器,实现self.request = request
#
# 23. 自执行函数
# (function(arg){
#
#
# })('sf')
#
#
# 24. URL的钩子函数
#
# 25. 多继承
#
# 26. 批量导入,xlrd
#table = data.sheets()[0]
table = data.sheet_by_index(0)
print(table)
#获取正行或是整列的值
con = table.row_values(0)#[356.0, '星际牛仔', 'カウボーイビバップ', '\n 26话 / 1998年10月23日 / 渡辺信一郎 / 矢立肇 / 川元利浩 ', 9.1, '(4021人评分)']
con = table.col_values(2)#['cname', '星际牛仔', '攻壳机动队 S.A.C. 2nd GIG', '攻壳机动队 STAND ALONE COMPLEX', '新世纪福音战士', ]
print(con)
#获取行数与列数
nrows = table.nrows
print(nrows)#673
ncols = table.ncols
print(ncols)#6 #循环行列表数据
# for i in range(nrows):
# print(table.row_values(i)) #循环列列表数据
for i in range(ncols):
print(table.col_values(i))
#单元格索引
val = table.cell(5,5).value # print(val2)
# 27. redis连接池
# 为什么使用Redis连接池?
首先Redis也是一种数据库,它基于C/S模式,因此如果需要使用必须建立连接,稍微熟悉网络的人应该都清楚地知道为什么需要建立连接,
C/S模式本身就是一种远程通信的交互模式,因此Redis服务器可以单独作为一个数据库服务器来独立存在。 import redis
conn = redis.Redis(host='192.168.20.150',port=6379,password='')
# conn.set('ldq_k1','v1')
k1 = conn.get('ldq_k1')
print(k1)#b'v1'
# conn.rpush('ldq_k2',*[1,2,3,4,5,6])
k2= conn.rpop('ldq_k2')
print(k2)
# 28. 工厂模式
# settings.py
# MSG_PATH = "path.Email"
#
#
# class XXFactory(object):
# @classmethod
# def get_obj(cls):
# settings.MSG_PATH
# # rsplit
# # importlib
# # getattr
# return obj
#
# class Email(object):
# def send ...
#
# class WeChat(object):
# def send ...
#
# class Msg(object):
# def send ...
#
#
# 29. Models类中自定义save方法
借鉴了admin重写了save方法
from django.contrib import admin
class ArticleAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
# 自定义操作
obj.save() defsave(self,*args,**kwargs):
do_something()
super(YourModel, self).save(*args,**kwargs) # Call the "real" save() method.
do_something_else()
#
# 30. django admin中注册models时候
# from django.contrib import admin
#
# from . import models
#
# # 方式一
# class UserConfig(admin.ModelAdmin):
# pass
#
# admin.site.register(models.UserInfo,UserConfig)
#
# # 方式二
# @admin.register(models.UserInfo)
# class UserConfig(admin.ModelAdmin):
# pass
#
# 31. 深浅拷贝 '''

crm的知识点整理的更多相关文章

  1. ACM个人零散知识点整理

    ACM个人零散知识点整理 杂项: 1.输入输出外挂 //读入优化 int 整数 inline int read(){ int x=0,f=1; char ch=getchar(); while(ch& ...

  2. Android 零散知识点整理

    Android 零散知识点整理 为什么Android的更新试图操作必须在主线程中进行? 这是因为Android系统中的视图组件并不是线程安全的.通常应该让主线程负责创建.显示和更新UI,启动子线程,停 ...

  3. vue前端面试题知识点整理

    vue前端面试题知识点整理 1. 说一下Vue的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫 ...

  4. kafka知识点整理总结

    kafka知识点整理总结 只不过是敷衍 2017-11-22 21:39:59 kafka知识点整理总结,以备不时之需. 为什么要使用消息系统: 解耦 并行 异步通信:想向队列中放入多少消息就放多少, ...

  5. JSP页面开发知识点整理

    刚学JSP页面开发,把知识点整理一下. ----------------------------------------------------------------------- JSP语法htt ...

  6. JS知识点整理(二)

    前言 这是对平时的一些读书笔记和理解进行整理的第二部分,第一部分请前往:JS知识点整理(一).本文包含一些易混淆.遗漏的知识点,也会配上一些例子,也许不是很完整,也许还会有点杂,但也许会有你需要的,后 ...

  7. css入门知识点整理

    css入门知识点整理 不要嘲笑我这个蒟蒻..例子来源:w3school css其实就分为两个东西,一个是选择器,另外一个是声明.声明定义了某个对象的属性的值,这都是html的内容.重点要关注的是选择器 ...

  8. activity生命周期知识点整理

    activity生命周期知识点整理 Activity: 是一个应用组件,用户可与其提供的屏幕进行交互.窗口通常会充满屏幕,但也可以小于屏幕并浮动在其他窗口之上. 一个activity的什么周期: 启动 ...

  9. 【Android 面试基础知识点整理】

    针对Android面试中常见的一些知识点整理,Max 仅仅是个搬运工.感谢本文中引用文章的各位作者,给大家分享了这么多优秀文章.对于当中的解析,是原作者个人见解,有错误和不准确的地方,也请大家积极指正 ...

随机推荐

  1. UML和模式应用4:初始阶段(3)--需求制品之用例模型

    1. 前言 UP开发包括四个阶段:初始阶段.细化阶段.构建阶段.移交阶段: UP每个阶段包括 业务建模.需求.设计等科目: 其中需求科目对应的需求制品包括:设想.业务规则.用例模型.补充性规格说明.词 ...

  2. 嵌入式系统C编程之错误处理

    前言 本文主要总结嵌入式系统C语言编程中,主要的错误处理方式.文中涉及的代码运行环境如下: 一  错误概念 1.1 错误分类 从严重性而言,程序错误可分为致命性和非致命性两类.对于致命性错误,无法执行 ...

  3. Salt Document学习笔记1

    原文来自Salt Documentation,作者是 Thomas Hatch),我摘抄部分可能今后会用到或适合入门到精通的一些原文段落,简单翻译后发上来,便于查阅和研究 一.原理方面:The net ...

  4. RMAN-06059(转)

    change archivelog all crosscheck;

  5. activit流程引擎启动流程报错

    代码如下: 目录结构 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); @Test public void ...

  6. cas中总是得不到返回的属性

    cas可以登录,但是得不到返回的属性,后来看日志才知道数据库链接报错,原来URL中少了jdbc:.真是愚蠢的错误,记录之,警之!

  7. iOS 中的Certificate,Provisioning Profile 的一些注意 (不断完善中)

    注册apple id 有1年多了,这些概念还是模模糊糊的,决定在这里总结一下. 请参阅官方文档 App Distribution Guide code singing的作用如下: Code signi ...

  8. Windows Server 2003 R2标准版 SP2 64位 (简体中文)官方原版ISO镜像

    Windows Server 2003 R2标准版 SP2 64位 (简体中文)官方原版ISO镜像迅雷下载   软件简介 Windows Server 2003 R2标准版是继Windows Serv ...

  9. 一个简单 JDK 动态代理的实例

    动态代理的步骤: 创建一个实现了 InvocationHandler 接口的类,必须重写接口里的 invoke()方法. 创建被代理的类和接口 通过 Proxy 的静态方法 newProxyInsat ...

  10. poj2828 伸展树模拟

    用伸展树模拟插队比线段树快乐3倍.. 但是pojT了.别的oj可以过,直接贴代码. 每次更新时,找到第pos个人,splay到根,然后作为新root的左子树即可 #include<iostrea ...