m.l

Results 23 issues of m.l

## 第三章 模型 本章,我们将讨论以下话题: ``` 模型的重要性 类图表 模型结构模式 模型行为模式 迁移 ``` ## M比V和C都更大 在Django中,模型是具有处理数据库的一种面向对象的方法的类。通常,每个类都引用一个数据库表,,每个属性都引用一个数据库列。你可以使用自动生成的API查询这些表。 模型是很多其他组件的基础。只要你有一个模型,你可以快速地推导模型admin,模型表单,以及所有类型的通用视图。在每个例子中,你都需要下一个行或是两行代码,这样可以让它看上去没有太多魔法。 模型也被用在更多超出你期望的地方。这书因为Django可以以多种方法运行。Django的一些切入点如下: ``` 熟悉web请求-响应流程 Django的交互式shell 管理命令 测试脚本 异步任务队列比如Celery ``` 在多数的这些例子中,模型模块要导入(作为django.setup()的一部分)。因此,最好保证模型远离任何不必要的依赖,或者导入任何的其他Django组件,比如视图。 简而言之,恰当地设计模型是很重要的事情。现在,让我们从SuperBook模型设计开始。 > #### 注释 > >...

第十二章 继承该如何是好 --- > [我们]开始去推动继承思想,使其成为了新手也可以构建以前只有原专家才可以设计的框架。 > > — 阿兰.凯《Smalltalk的早期历史》 本章涉及到了继承和子类化,这里有两处特别强调的针对Python的细节: - 子类化内建类型的陷阱 - 多重继承与方法解析顺序 很多人认为多重继承带来的麻烦远大于其带来的好处。 然而,由于Java特别出色并具有广泛的影响力,这就意味着,在实际编程活动中很多程序员并没有见过多重继承。这就是为什么我们通过两个重要的项目来阐明多重继承的适应范围:`Tkinter GUI`套件,以及Django web 框架的原因。 我们从子类化内建类型的问题开始。余下的章节会用案例研究并学习多重继承,讨论在构建类的分层设计时会遇到的问题。 ## 子类化内建类型是需要些技巧的 在Python2.2之前,子类化`list`或者`dict`这样的内建类型是不可能的。打那以后,Python虽然可以做到子类化内建类型,但是仍然要面对的重要警告是:内建的代码(由C语言重写)并不会调用被通过用户自定义类所覆盖的特殊方法。 对问题的准确描述都放在了`PyPy`文档,以及内建类型的子类化一节中的`PyPy和CPython之间差异`: > 正式地来说,Cpython对完全地重写内建类型的子类方法时是否明确地调用毫无规则可循。大略上,这些方法从来没有被其他的相同对象的内建方法所调用。例如,`dict`子类中的重写`__getitem__()`不会被`get()`这样的内建方法调用。 例子12-1阐明了此问题。 _例子12-1。重写的`__setitem__`被`dict`的`__init__`和`__update__`方法所忽略。_ --- ```...

(virtual_env_django_1.7)cundi@cundideAir ~/P/Forum> pip install django_detect_cyclic Collecting django-detect-cyclic Using cached django-detect-cyclic-0.0.9.tar.gz Collecting pysmell==0.7.3 (from django-detect-cyclic) Using cached pysmell-0.7.3.zip Collecting pyplete==0.0.2 (from django-detect-cyclic) Using cached pyplete-0.0.2.tar.gz Collecting python-graph-core==1.8.1 (from django-detect-cyclic) Could not...

# 第三章-表单和视图 --- 在本章,我们学习以下内容: ``` 传递HttpRequest到表单 利用表单的save方法 上传图片 使用django-crispy-forms生成表单布局 过滤对象列表 管理分页列表 编写类视图 生成PDF文档 ``` ## 引言 当数据库结构定在模型中时,我们需要有一些视图供用户输入数据,或者对用户显示数据。本章,我们会关注管理表单的视图,列表视图,以及生成可替换的输出而不仅仅是HTML。举个最简单的例子来说,我们将把模板和URL规则的创建的决定权下放给你。 ## 传递HttpRequest到表单 Django的每一个视图的第一个参数通常是命名为`request`的`HttpRequest`对象。它包含了请求的元数据,例如,当前语言编码,当前用户,当前cookie,或者是当前的session。默认,表单用在视图中用来接受GET胡诌和POST参数,文件,初始化数据,以及其他的参数,但却不是`HttpRequest`对象暗沟。某些情况下,特别是当你想要使用请求数据过滤出表单字段的选择,又或者是你想要处理像在表单中保存当前用户或者当前IP这样事情时,额外地传递地`HttpRequest`到表单会非常有用的。 在本方法中,我会向你展示一个在表单中某人可以选择一个用户并对此用户发送消息的例子。我们会传递`HttpRequest`对象到表单以暴露接受选项的当前用户:我们不想要任何人都可以给他们发送消息。 ## 预热 让我们来创建一个叫做`email_messages`的应用,并把它放到设置中的`INSTALLED_APPS`去。该app仅含有表单和视图而没有模型。 ## 具体做法 1. 添加一个新文件,`forms.py`,其中消息表单包含两个字段:接收人选项和消息文本。同时,该表单拥有一个初始化方法,它会接受`request`对象并对接收人的选项字段修改: ``` python...

第二章 数据库结构 --- 本章节覆盖以下话题: - 使用模型mixin - 使用相对URL方法创建一个模型mixin - 创建模型mixin以处理日期的创建和修改 - ## 简介 当你新建新的app时,要做的第一件事就是创建表现数据库结构的模型。我们假设你之前已经创建了Django的app,要是没有话马上创建一个,而且你也阅读并了解Django的官方教程。本章,我会向你演示在项目中的一些使数据库结构在不同 ## 使用模型mixin 在Python这样的面向对象语言中,mixin类可以看作是是一个实现特性的接口。当一个模型使用mixin来扩展,它就实现了接口,包括它的所有字段,属性,和方法。Django模型中的Mixin可以在你想要于不同的模型再三地重复使用通用功能。 ## 准备开始 要开始的话,你需要创建一些可重复使用的mixin。mixin的某些典型例子会在后面章节展示。一个保存模型mixin的好地方就是`utils`模块。 ##### 提示 > 如果你要创建一个与他人共享的重复使用app,那就要把模型mixin放在app里,比如放在应用的`base.py`文件中。 ## 如何做 在任何想要使用的mixin的Django应用中,创建`models.py`文件,并输入下面的代码: ``` python #demo_app/models.py...

## 第五章 定制模板过滤器和标签 本章,我们会学习以下内容: - 遵循模板过滤器和标签的约定 - 创建一个模板过滤器显示已经过去的天数 - 创建一个模板过滤器提取第一个媒体对象 - 创建一个模板过滤器使URL可读 - 创建一个模板标签在模板中载入一个QuerySet - 创建一个模板标签为模板解析内容 - 创建一个模板标签修改request查询参数 ## 简介 如你所知,Django有一个非常庞大的模板系统,特别是模板继承, ## 遵循模板过滤器和标签的约定 Custom template filters and tags can become...

在本章,我们将学习以下技巧: - 使用Django Shell - The monkey patching slugification function - The monkey patching model administration - Toggling Debug Toolbar - Using ThreadLocalMiddleware - Caching the method value - 通过电子邮件获取错误报告详情...

本章,我们会学习以下技巧: - 从一个本地CSV文件导入数据 - 从一个本地Excel文件导入数据 - 从一个外部JSON文件导入数据 - 从一个外部XML文件导入数据 - 生成一个可过滤的RSS订阅 - 使用Tastypie为第三方提供数据

本章-我们会学习以下内容: - 创建分层类别 - 用django-mptt-admin生成分类admin接口 - 用django-mptt-tree创建分类admin接口 - 在模板中传递分类 - 在表单中使用一个单选字段选择一个分类 - 在表单中使用一个复选框列表选择多个分类

本章我们会学习以下内容: ``` Creating templates for Django CMS Structuring the page menu Converting an app to a CMS app Attaching your own navigation Writing your own CMS plugin Adding new fields...