Web.Development.with.Django.Cookbook
Web.Development.with.Django.Cookbook copied to clipboard
《Django网站开发Cookbook》,2016年2月,第二版,基于Django1.8
# 第三章-表单和视图 --- 在本章,我们学习以下内容: ``` 传递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...
“In this chapter, we will cover the following recipes: Customizing columns in the change list page Creating admin actions Developing change list filters Exchanging administration settings for external apps Inserting...
“Chapter 4. Templates and JavaScript In this chapter, we will cover the following topics: Arranging the base.html template Including JavaScript settings Using HTML5 data attributes Opening object details in a...
本章我们会学习到以下内容: - 使用虚拟环境 - 创建一个项目文件结构 - 用pip处理项目依赖 - 在项目中包括外部的依赖 - 在settings中定义相对路径 - 为Subersion用户动态地配置STATIC_URL - 为Git用户动态地配置STATIC_URL - 创建并包括本地设置 - 把UTF-8设置为MySQL配置的默认编码格式 - 设置Subversion的忽略特性 - 创建Git忽略文件 - 删除Python编译文件 - 在Python文件中导入顺序 - 定义可重写的app设置