您的位置:首页 > 编程语言 > Go语言

使用Django开发一个图书管理系统 03----迈出第一步,建立项目

2014-11-13 00:00 706 查看
BOOKMS是一个公司内部的图书管理系统。

本系列用多次迭代方法,逐步实现一个图书管理系统BOOKMS。

本文主要介绍使用PyCharm建立Django项目,然后建立核心的领域模型。

一.建立项目

首先我们要迈出我们的第一步,使用PyCharm建立我们的BOOKMS项目,注意路径里不能有中文,项目类型选择Django。

因为我们项目后台管理使用admin,所以这里我们直接启用Djangoadmin模块

到这里我们就在图上的目录里创建了一个基本的项目,可以点击运行然后到http://127.0.0.1:8000/看看,当然一个华丽丽的错误。

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

从BOOKMS来看,图书(Book)应该是模型中的核心对象之一。就让我们先来实现Book模型。

Django约定必须要创建app才能使用模型。这也是Django的哲学之一:
Django认为一个project包含很多个Djangoappl;project提供配置文件,比如数据库连接信息、安装的app清单、模板路径等等;而一个app是一套Django功能的集合,通常包括模型和视图,按Python的包结构的方式存在。
app可以在多个project之间很容易的复用。比如Django自带的注释系统和自动管理界面。

接下来我们添加一个app:bookapp

cmd命令行到bookms目录然后执行

pythonmanage.pystartappbookapp(这里也可以使用pycharm执行但是觉得不太好用)

最终目录是这样的:

二.用代码定义模型

classBook(models.Model): classMeta: verbose_name='图书' verbose_name_plural=verbose_name isbn=models.CharField('ISBN',max_length=13,unique=True) title=models.CharField('书名',max_length=200) subtitle=models.CharField('副标题',max_length=200,blank=True) pages=models.IntegerField('页数',blank=True) author=models.CharField('作者',max_length=60) translator=models.CharField('译者',max_length=60,blank=True) price=models.CharField('定价',max_length=60,blank=True) publisher=models.CharField('出版社',max_length=200,blank=True) pubdate=models.CharField('出版日期',max_length=60,blank=True) cover_img=models.URLField('封面图',blank=True) summary=models.TextField('内容简介',blank=True,max_length=2000) author_intro=models.TextField('作者简介',blank=True,max_length=2000) def__unicode__(self): returnstr(self.title)
模型如上面代码,字段是参照豆瓣API的返回的(以后我们的图书肯定是从豆瓣获取数据啦……)。

三.部署模型到数据库

Django认为所以的事情都需要你的确认,所以我们的project还需要一些配置才能工作。这里我们在bookms项目建立一个db目录然后把我们前一篇里弄的那个bookms.db文件放进来。

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

DATABASES={ 'default':{ 'ENGINE':'django.db.backends.sqlite3', 'NAME':'db/bookms.db', 'USER':'', 'PASSWORD':'', 'HOST':'', 'PORT':'', } }
然后修改配置文件settings.py,使我们的bookapp生效,将INSTALLED_APPS改为:

INSTALLED_APPS=( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', #Uncommentthenextlinetoenabletheadmin: 'django.contrib.admin', #Uncommentthenextlinetoenableadmindocumentation: #'django.contrib.admindocs', 'BOOKMS.bookapp', )
只是在最后加入一行'BOOKMS.bookapp',前面那堆东西是因为我们开启了admin模块。

然后修改一下:

LANGUAGE_CODE='zh-CN'

TIME_ZONE='Asia/Shanghai'

让这玩意变成中文的。

然后我们来验证一下模型:

cmd命令行到bookms目录然后执行

pythonmanage.pyvalidate
0errorsfound

然后可以来看看这个模型会被生成什么样的sql,同样在命令行执行:


pythonmanage.pysqlallbookapp

BEGIN;
CREATETABLE"bookapp_book"(
"id"integerNOTNULLPRIMARYKEY,
"isbn"varchar(13)NOTNULLUNIQUE,
"title"varchar(200)NOTNULL,
"subtitle"varchar(200)NOTNULL,
"pages"integerNOTNULL,
"author"varchar(60)NOTNULL,
"translator"varchar(60)NOTNULL,
"price"varchar(60)NOTNULL,
"publisher"varchar(200)NOTNULL,
"pubdate"varchar(60)NOTNULL,
"cover_img"varchar(200)NOTNULL,
"summary"textNOTNULL,
"author_intro"textNOTNULL
)
;
COMMIT;

最后将模型导入数据库:

pythonmanage.pysyncdb

Creatingtables...
Creatingtableauth_permission
Creatingtableauth_group_permissions
Creatingtableauth_group
Creatingtableauth_user_user_permissions
Creatingtableauth_user_groups
Creatingtableauth_user
Creatingtableauth_message
Creatingtabledjango_content_type
Creatingtabledjango_session
Creatingtabledjango_site
Creatingtabledjango_admin_log
Creatingtablebookapp_book

YoujustinstalledDjango'sauthsystem,whichmeansyoudon'thaveanysuperusersdefined.
Wouldyouliketocreateonenow?(yes/no):yes
Username(Leaveblanktouse'lt'):admin
E-mailaddress:admin@test.com
Warning:Passwordinputmaybeechoed.
Password:123456
Warning:Passwordinputmaybeechoed.
Password(again):123456
Superusercreatedsuccessfully.
InstallingcustomSQL...
Installingindexes...
Nofixturesfound.

因为我们启用了admin模块所以这里步骤稍微复杂一点,要建立一个默认的管理员账户。

最后我们再次run系统并浏览http://127.0.0.1:8000/admin/终于可以看到界面了,用admin和123456登录看看成果吧。

四.将项目放到SVN进行版本控制

PyCharm已经集成了很多的版本控制,这里我们使用svn。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: