记录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 相关文章推荐
Django静态资源URL STATIC_ROOT的配置方法
Nov 08 Python
Python3 正在毁灭 Python的原因分析
Nov 28 Python
将Django框架和遗留的Web应用集成的方法
Jul 24 Python
详解Python发送邮件实例
Jan 10 Python
Python网络编程 Python套接字编程
Sep 13 Python
Django实现快速分页的方法实例
Oct 22 Python
利用python如何在前程无忧高效投递简历
May 07 Python
使用Python3内置文档高效学习以及官方中文文档
May 19 Python
Python 切分数组实例解析
Nov 07 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 Python
Python使用Pygame绘制时钟
Nov 29 Python
python实现计算器简易版
Dec 17 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模板技术[转]
2007/01/04 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
PHP单例模式详细介绍
2015/07/01 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
JavaScript中创建对象和继承示例解读
2014/02/12 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
Bootstrap框架实现广告轮播效果
2016/11/28 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
vue如何搭建多页面多系统应用
2020/06/17 Javascript
python执行等待程序直到第二天零点的方法
2015/04/23 Python
Django小白教程之Django用户注册与登录
2016/04/22 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
Python使用crontab模块设置和清除定时任务操作详解
2019/04/09 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
2020/06/29 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
2021/01/08 Python
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
2016/05/09 HTML / CSS
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
2016/08/18 面试题
《诺贝尔》教学反思
2014/02/17 职场文书
个人欠款担保书
2014/05/20 职场文书
消防安全宣传口号
2014/06/10 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
2015年世界环境日活动方案
2015/05/05 职场文书
辛亥革命观后感
2015/06/02 职场文书
刮痧观后感
2015/06/05 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
2021/06/11 Python