• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > 记录Django开发心得

记录Django开发心得

作者:hebedich 字体:[增加 减小] 来源:互联网

hebedich 通过本文主要向大家介绍了django web开发指南,django开发实例,django开发,django web开发实例,django开发网站等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

概念层面

概括

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 
</div>

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

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

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

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

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

[i for i in xrange(0,100) if i%2==0] 
</div>

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

Q(**{key:value}) 
</div>

我在培训的时候,学到的是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 
</div>

这个@符号的用法叫“修饰器”,个人感觉这是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'))
</div>

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

Error集

取出数据时:XXManager object is not iterable

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

</div>

您可能想查找下面的文章:

  • 开源Web应用框架Django图文教程
  • 将Django框架和遗留的Web应用集成的方法
  • 将Django框架和遗留的Web应用集成的方法
  • 记录Django开发心得

相关文章

  • Python itertools模块详解
  • python操作redis的方法
  • python实现获取客户机上指定文件并传输到服务器的方法
  • 举例讲解Python的lambda语句声明匿名函数的用法
  • 在IIS服务器上以CGI方式运行Python脚本的教程
  • Python下Fabric的简单部署方法
  • 用Python编写简单的定时器的方法
  • 用Python的urllib库提交WEB表单
  • python实现用于测试网站访问速率的方法
  • Python开发的单词频率统计工具wordsworth使用方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Python yield使用方法示例
    • python列出目录下指定文件与子目录的方法
    • 解决uWSGI的编码问题详解
    • Python中用altzone()方法处理时区的教程
    • 在Django的视图(View)外使用Session的方法
    • 解析Python中的二进制位运算符
    • Django中实现点击图片链接强制直接下载的方法
    • 浅析Python中的getattr(),setattr(),delattr(),hasattr()
    • python利用不到一百行代码实现一个小siri
    • Python使用pygame模块编写俄罗斯方块游戏的代码实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有