Django之第一个app<4>

创建模型

既然你的开发环境,即工程,已经设置好了,那么你应该开始工作了。

用Django写的每一个应用都会包含一个遵循某种约定的包。Django能够自动产生一个应用的基本目录结构,所以你能够专心于写代码而不是创建目录。

工程和应用的比较

一个工程和一个应用之间的区别是什么?一个应用指的是一个Web应用,做例如网络日志系统、一个做公共纪录的数据库或者一个简单的投票应用。一个工程是配置文件和多个应用的集合,一个工程可以包含多个应用,一个应用可以在多个工程中。

你的应用可以放在你python路径的任何地方。在这个教程中,我们会在与manage.py 文件同一目录下创建我们的投票应用,这样的话,创建的应用可以作为顶层模块被导入,而不是作为mysite 的子模块。

为了创建你的应用,确保你现在是在与manage.py 处于同一等级目录下,键入下面的命令:

$ python  manage.py startapp  polls

展示:

charies:Desktop weichuang$ cd mysite
charies:mysite weichuang$ ls
db.sqlite3  manage.py   mysite
charies:mysite weichuang$ python  manage.py startapp  polls
charies:mysite weichuang$ ls
db.sqlite3  manage.py   mysite      polls

这会创建一个poll 目录,里面是这样的:

这个目录结构会存放投票这个应用。

用Django写一个数据库Web应用的第一步是定义你的模型

在我们这个简单的投票应用中,我们会创建两个模型:QuestionChoice 。一个Question 模型包含一个问题和一个发行日期。一个Choice模型包含两个字段:选择的文本和投票计数器。 每个Choice都与Question是关联的。

这些概念是由简单的python类来表示的。像下面那样编辑polls/models.py 文件

from django.db import models

class Question(models.Model):
    question_text=models.CharField(max_length=200)
    pub_date=models.DateTimeFiled('date published')

class Choice(models.Model):
    question=models.ForeignKey(Question)
    choice_text=models.CharField(max_length=200)
    votes=models.IntegerField(default=0)

代码很清楚,每个模型是由django.db.models.Model的子类表示的。每个模型拥有许多类成员变量,每个类类成员变量代表模型中的一个字段。

每个字段是由Field类的实例表示的。例如,CharField代表字符字段,DateTimeField代表日期。这会告诉Django每个字段是什么类型的数据。

每个Field类的实例的名字就是字段名,这样的格式对机器来说是友好的。你会在python代码中使用这个值,并且你的数据库会使用它作为字段名。

一些Field类需要一些参数。例如,CharFiled需要你给它传递max_length。我们不久就会发现,那样使用不仅仅是以数据库的模式,而且非常有效。一个Field可以有多种可选的参数,在这个例子中,我们把votesdefault值是0。

最后,使用ForeignKey定义了一个关系。那会告诉Django每个Choice模型都会与Question有关系。Django支持许多常见的数据库关系:多对一、多对多、一对一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值