记录Django开发心得


Posted in Python onJuly 16, 2014

概念层面

概括

Django是属于MVC的Web框架。

Model:负责与数据库打交道

View:负责获取或者增强从Models得到的数据

Controller:这是Django本身

Project与App的区别

Project:提供各种配置文件 App:功能的结合,包括Model和view,需要在根目录下添加”__init__.py”,使得Python可以识别

ManyToMany与ForeignKey的区别

ForeignKey例子:

员工打卡上班的记录——员工可有多次打卡记录,但是一次刷卡记录只能有单一员工属性(一对多)

ManyToMany例子:

一篇文章可以有多个标签,而一个标签对应的文章也可以是多篇的(多对多)

ManyToMany还有一种特殊的结构,非常类似Twitter的Follow。

假设 A Follow了 B,但是B并没有Follow A,他们之间的Follow是不对等的,要实现这种关系,要在Meta里面设置symetric=False

SexyCode

这是我理解后觉得“性感到死”的一些代码:

lambda x, y: x+y

Lambda其实和JS中的匿名函数有这异曲同工的作用,嫌起名麻烦,就丢进去,Lambda默认返回里面的值,所以不需要return

map(lambda x: x+1, [1,2,3]) #得到[2,3,4]

也就是每个都执行一次前面的函数

reduce(lambda x, y: x+y, [1,2,3]) #得到6

也就是每个都和之前的元素执行一次操作

[i for i in xrange(0,100) if i%2==0]

得到100以下所有偶数。学术上叫“列表推导”,但在现实案例中是遍历的好工具。

Q(**{key:value})

我在培训的时候,学到的是Q、F这两个Django函数是不接受字符串的,即 Q("abc=1") 是不能接受的。但是这段代码性感之处就是彻底摆脱了这条束缚(其实就是重写了keyword对),可以随意构造你喜欢的查询段,这在构造搜索功能时十分有用。比如:

q_dict = reduce(lambda x,y: x&y, [ Q(**{"%s__slug_name" % taxonomy:request.GET.get(taxonomy)}
    ) for taxonomy in request.GET.keys() if taxonomy in SEARCHABLE_LIST ])
@property

这个@符号的用法叫“修饰器”,个人感觉这是python比其他语言优美的地方,如何构造修饰器的话,还是看文档的好。这里只是说在class中使用 @property 的话,这个函数就自动地变成class的属性了,这和js的set、get很像
super超类的使用,super一出,继承的子class一概不执行自身的函数,而是执行super指定的函数
annotate和aggregate。这两个家伙在构造新的query_set时非常有用。比如要统计出一台电脑的总价时,在ComputerManager里面使用

def get_query_set(self):
query_set = super(ComputerManager, self).get_query_set()
query_set = query_set.annotate(price=Sum('devices__price'))

这样,每台电脑就有了总价格。这在构造商品集的时候很方便,但是admin.py的编写就略显罗嗦了。

Error集

取出数据时:XXManager object is not iterable

这是因为Django不会在执行代码过程中得出SQL语句并查询(所以想获得Sql语句也是不可能的)。所以需要使用.get(),.all(),.filter来获得真正的数据实体

Python 相关文章推荐
Python中函数的用法实例教程
Sep 08 Python
详解在Python和IPython中使用Docker
Apr 28 Python
简单掌握Python中glob模块查找文件路径的用法
Jul 05 Python
利用python求相邻数的方法示例
Aug 18 Python
机器学习python实战之手写数字识别
Nov 01 Python
使用python根据端口号关闭进程的方法
Nov 06 Python
python pandas库的安装和创建
Jan 10 Python
python中aioysql(异步操作MySQL)的方法
Apr 11 Python
python3用PIL把图片转换为RGB图片的实例
Jul 04 Python
基于Tensorflow:CPU性能分析
Feb 10 Python
Python count函数使用方法实例解析
Mar 23 Python
Django-rest-framework中过滤器的定制实例
Apr 01 Python
Python实现动态添加类的属性或成员函数的解决方法
Jul 16 #Python
Python重新引入被覆盖的自带function
Jul 16 #Python
Python实现扫描指定目录下的子目录及文件的方法
Jul 16 #Python
python re正则表达式模块(Regular Expression)
Jul 16 #Python
Web服务器框架 Tornado简介
Jul 16 #Python
高性能web服务器框架Tornado简单实现restful接口及开发实例
Jul 16 #Python
Django在Win7下的安装及创建项目hello word简明教程
Jul 14 #Python
You might like
PHP获取当前url的具体方法全面解析
2013/11/26 PHP
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
Zend Framework实现多服务器共享SESSION数据的方法
2016/03/22 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
2017/11/06 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
jquery插件orbit.js实现图片折叠轮换特效
2015/04/14 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
jQuery ajax实现省市县三级联动
2021/03/07 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
python计算最大优先级队列实例
2013/12/18 Python
用python + openpyxl处理excel2007文档思路以及心得
2014/07/14 Python
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
python django中8000端口被占用的解决
2019/12/17 Python
Python如何实现后端自定义认证并实现多条件登陆
2020/06/22 Python
深入了解Python enumerate和zip
2020/07/16 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
应聘自荐信
2013/12/14 职场文书
大学生的网络创业计划书
2013/12/26 职场文书
工商企业管理专业自荐信范文
2014/04/12 职场文书
竞选学委演讲稿
2014/09/13 职场文书
教师自荐信范文
2015/03/06 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书
使用Python通过企业微信应用给企业成员发消息
2022/04/18 Python