`
luliangok
  • 浏览: 816404 次
文章分类
社区版块
存档分类
最新评论

Django实战(2):创建第一个模型类

 
阅读更多
从模型开始开发似乎是个好主意。一方面模型是整个应用的核心,实现了应用的业务数据和对业务数据进行操作的约束,而视图和模板只是向用户提供操作和展现这些数据的界面;另一方面模型相对于系统的其他部分更加稳定,将模型先确定下来有助于系统其他部分的实现。DDD(领域驱动设计)更进一步将模型中的核心对象抽取出来作为“领域模型”。

从Depot应用来看,产品(Product) 应该是模型中的核心对象之一。就让我们先来实现Product模型。


创建app

我们可以从《Django第一步》中实现的工程开始。在继续之前,还要进行一些准备工作。
Django约定必须要创建app才能使用模型。这也是Django的哲学之一:
Django认为一个project包含很多个Django appl;project提供配置文件,比如数据库连接信息、 安装的app清单、模板路径等等;而一个app是一套Django功能的集合,通常包括模型和视图,按Python的包结构的方式存在。
app可以在多个project之间很容易的复用。比如Django自带的注释系统和自动管理界面。

所以我们在原有工程的基础上还需要创建一个app。现在假设我们只需要一个app,并将其命名为depotapp。创建应用的脚本也是使用project目录下的managy.py:

$python manage.py startapp depotapp

就会在工程目录下创建一个depotapp目录:
depotapp/
__init__.py
models.py
tests.py
views.py

用python代码定义数据库

在《Django的第一印象》中介绍过,Django的设计是 以Python类的形式定义数据模型。之所以没有采用rails的运行时自动获取数据库schema的”魔术方式“,是出于以下的考虑:
1. 效率。运行时扫描数据库可能会带来性能问题。
2. 明确性。只通过Model类就完全知道数据库中有哪些字段,而不需要再切换到migration或schema文件中去查看,更不需要去查看数据库结构。
3. 一致性。你看到的只是Python代码,完全不需要将大脑切换到”数据库模式“,能极大提高开发效率。
4. 版本控制。rails中的数据库结构版本保存在一个个的migration文件中,这简直就是版本管理的”反模式“。Django的方式是管理Model代码文件的版本。
5. 可扩展性。可以定义数据库中不存在的”字段类型“。比如Email,URL,等等。
当然,Django也提供从现有数据库表中自动扫描生成模型的工具。

so,《Agile Web Development with Rails》中的做法是先创建数据库表:


然后再生成scaffold(包括model,controller,test,4个views等等)。

而Django的做法是,编写下面的Model类:

如同其他的ORM,ID字段是默认声明的,不需要单独处理.


部署模型
Django 中的每一件事情都需要明确声明,也就是说,没有你的允许,Django不会主动去碰你的代码。所以我们还需要在project中进行一些配置工作才能让app生效。
不过这样的配置只需要做一次。

首先要创建数据库并配置整个project的数据库连接,为了简单起见,使用sqlite数据库。
在工程文件夹下创建db文件夹和sqlite数据库文件:

$mkdir db
$cd db
$sqlite3 development.sqlite3

然后修改配置文件settings.py, 将DATABASES改为:


就完成了数据库的配置。

还需要配置project让depotapp生效,还是在settings.py中,将INSTALLED_APPS改为:


接下来就可以使用模型了。先验证一下:
$python manage.py validate
0 errors found


然后可以看一下这个Model将会生成什么样的数据库:
$ python manage.py sqlall depotapp
BEGIN;
CREATE TABLE "depotapp_product" (
"id" integer NOT NULL PRIMARY KEY,
"title" varchar(100) NOT NULL,
"description" text NOT NULL,
"image_url" varchar(200) NOT NULL,
"price" decimal NOT NULL
)
;
COMMIT;


最后,将模型导入数据库:
$ python manage.py syncdb
Creating tables ...
Creating table depotapp_product
Installing custom SQL ...
Installing indexes ...
No fixtures found.


至此,完成了第一个模型类的创建。







分享到:
评论

相关推荐

    《Django实战》源码(第一、第二版) .zip

    2. **模型(Model)**:Django的数据模型是与数据库交互的核心,通过定义模型类来创建数据库表。学习如何定义模型字段,如CharField、IntegerField等,以及如何处理关系,如OneToOneField、ForeignKey和...

    Python高效开发实战 Django Tornado Flask Twisted 中文版 完整版 带书签

    1. Django:Django被誉为“快乐的Web框架”,它是一个基于Python的开源Web应用框架,遵循MTV(Model-Template-View)设计模式。Django的核心特性包括: - ORM(对象关系映射):提供了一种将数据库表与Python类映射...

    Django入门与实践教程1

    【Django入门与实践教程1】是一份针对初学者的详尽教程,旨在引导读者从零开始构建一个实际的Django项目。教程涵盖了从环境搭建到项目部署的全过程,涉及了Django框架的核心概念和技术。 首先,【环境搭建】章节会...

    Django实战 课件 PPT

    **Django实战 课件 PPT** Django是一款基于Python的高级Web开发框架,它以其高效、可扩展和可重用性而闻名。本课件PPT主要针对想要深入理解和应用Django进行Web开发的学员设计,涵盖了Django的基础概念、核心功能...

    Django Web开发指南.pdf

    Django拥有一个庞大的第三方生态系统,提供了各种各样的扩展和应用: - 如何查找和使用第三方包。 - 如何开发Django的扩展应用。 由于提供的部分内容并不是标准的文本信息,所以无法从上述“部分内容”中提炼出...

    Python django最佳实战 英文版

    - **书名**:《Python Django 实战》第二版 - **作者**:James Bennett(Django 发布经理) - **出版年份**:2009年 - **ISBN**: - 纸质版:978-1-4302-1938-5 - 电子版:978-1-4302-1939-2 - **版权**:本书所有...

    django1.5 开发文档

    - **2.3 至 2.8 写第一个 Django 应用**:分为五个部分详细介绍如何创建并部署一个简单的 Django 应用程序。内容涉及项目和应用的创建、模型定义、视图编写、模板渲染等方面。 - **2.9 下一步阅读建议**:根据读者的...

    Django项目.pdf

    【Django项目开发详解】 本项目是一份关于Django商城开发的详细资料,适用于未来的查阅。...通过这样的实践,开发者可以深入理解Django框架的使用,以及如何将多种技术整合到一个完整的电商项目中。

    python 开发实战-模型 -创建模型类-第2集(csdn)————程序.pdf

    总结来说,创建Django模型类是构建Web应用的第一步,它定义了数据结构和业务逻辑。通过模型,我们可以方便地与数据库进行交互,同时利用Django的管理界面进行数据的增删改查。正确理解和使用模型类是成为Django...

    Python使用Django创建Web程序

    本项目是基于《Python编程从入门到实践》一书的第三个实战项目,旨在教你如何使用Django来创建一个完整的Web应用程序。下面,我们将深入探讨Django的核心概念和关键功能。 1. **Django简介** Django是用Python编写...

    django官方文档1.8

    - **模型层**:讲解了 Django 中的核心数据存储部分——模型(Models),包括如何定义模型类、与数据库进行交互等内容。 - **视图层**:探讨了处理 HTTP 请求的机制——视图(Views),介绍如何创建视图函数以及它们...

    Django开发文档

    **2.3 编写第一个 Django 应用(第一部分)** - **项目创建**: 创建一个新的 Django 项目。 - **应用添加**: 添加新的应用到项目中。 **2.4 编写第一个 Django 应用(第二部分)** - **模型定义**: 定义模型类。 ...

    django中文开发手册

    - **创建第一个项目**:指导如何创建一个简单的Django项目,并解释项目结构及各个部分的作用。 - **运行服务器**:介绍如何启动Django的开发服务器,并测试项目的运行状态。 #### 三、动态网页基础(第三章) - **...

    Apress - Practical Django Projects 2nd Edition 2009

    Django是一个用Python编写的开源Web开发框架,它遵循模型-视图-控制器(MVC)设计模式,旨在简化网站开发过程,提高开发效率。 这本书的内容涵盖了多个关键知识点,包括但不限于: 1. **Django入门**:介绍Django...

    django 1.3 官方手册

    - **编写第一个 Django 应用**:分四部分介绍了如何从零开始构建一个简单的 Web 应用程序,包括创建项目、定义模型、编写视图、设计模板等。 - **后续阅读推荐**:推荐了一些进阶教程和技术文章,帮助开发者深入学习...

    最简单的django入门与实践开发

    第一个视图函数:视图是处理用户请求并返回响应的一个函数或类。在Django中,视图函数或类处理HTTP请求,并将数据传递给模板进行渲染。 模板引擎设置:模板是定义如何显示数据的文件,通常包括HTML标记以及一些特殊...

    全套百度云教程:python基础+进阶+项目篇 (含Django和Tornado)

    Django是一个用Python编写的开源Web框架,它遵循MVC(Model-View-Controller)设计模式,并且提供了一系列强大而灵活的功能来简化Web开发过程。 1. **Django安装与配置**:安装Django、创建项目、配置数据库等。 2....

    DJANGO3:第一个项目

    在本教程中,我们将探索如何使用Django 3创建你的第一个Web项目。Django是用Python编写的高级Web框架,它遵循模型-视图-控制器(MVC)设计模式,提供了一个强大的数据库交互层,以及丰富的模板系统和管理界面。让...

    Django Web开发指南书及源代码

    2. **快速入门**:通过创建第一个Django项目和应用,介绍基本概念。 3. **模型与数据库**:详细讲解如何定义模型,创建数据库迁移,以及查询数据。 4. **视图与模板**:解释视图的编写,如何处理HTTP请求,以及如何...

    千锋教育Django笔记

    1. **项目创建**:如何使用`django-admin startproject`命令创建一个新的Django项目。 2. **应用创建**:理解Django中的“应用”概念,以及如何使用`python manage.py startapp`创建应用。 3. **模型(Model)**:...

Global site tag (gtag.js) - Google Analytics