使用Django开发一个图书管理系统 03----迈出第一步,建立项目
2014-11-13 00:00
706 查看
BOOKMS是一个公司内部的图书管理系统。
本系列用多次迭代方法,逐步实现一个图书管理系统BOOKMS。
本文主要介绍使用PyCharm建立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的返回的(以后我们的图书肯定是从豆瓣获取数据啦……)。
然后修改配置文件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登录看看成果吧。
本系列用多次迭代方法,逐步实现一个图书管理系统BOOKMS。
本文主要介绍使用PyCharm建立Django项目,然后建立核心的领域模型。
一.建立项目
首先我们要迈出我们的第一步,使用PyCharm建立我们的BOOKMS项目,注意路径里不能有中文,项目类型选择Django。因为我们项目后台管理使用admin,所以这里我们直接启用Djangoadmin模块
到这里我们就在图上的目录里创建了一个基本的项目,可以点击运行然后到
从模型开始开发似乎是个好主意。一方面模型是整个应用的核心,实现了应用的业务数据和对业务数据进行操作的约束,而视图和模板只是向用户提供操作和展现这些数据的界面;另一方面模型相对于系统的其他部分更加稳定,将模型先确定下来有助于系统其他部分的实现。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执行但是觉得不太好用)
最终目录是这样的:
二.用代码定义模型
模型如上面代码,字段是参照豆瓣API的返回的(以后我们的图书肯定是从豆瓣获取数据啦……)。
三.部署模型到数据库
Django认为所以的事情都需要你的确认,所以我们的project还需要一些配置才能工作。这里我们在bookms项目建立一个db目录然后把我们前一篇里弄的那个bookms.db文件放进来。然后修改配置文件settings.py,将DATABASES改为:
然后修改配置文件settings.py,使我们的bookapp生效,将INSTALLED_APPS改为:
只是在最后加入一行'BOOKMS.bookapp',前面那堆东西是因为我们开启了admin模块。
然后修改一下:
LANGUAGE_CODE='zh-CN'
TIME_ZONE='Asia/Shanghai'
让这玩意变成中文的。
然后我们来验证一下模型:
cmd命令行到bookms目录然后执行
pythonmanage.pyvalidate
0errorsfound
然后可以来看看这个模型会被生成什么样的sql,同样在命令行执行:
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:
Warning:Passwordinputmaybeechoed.
Password:123456
Warning:Passwordinputmaybeechoed.
Password(again):123456
Superusercreatedsuccessfully.
InstallingcustomSQL...
Installingindexes...
Nofixturesfound.
因为我们启用了admin模块所以这里步骤稍微复杂一点,要建立一个默认的管理员账户。
最后我们再次run系统并浏览
四.将项目放到SVN进行版本控制
PyCharm已经集成了很多的版本控制,这里我们使用svn。相关文章推荐
- 使用Django开发一个图书管理系统 03----迈出第一步,建立项目
- 使用Django开发一个图书管理系统----04.通过admin模块管理我们的app和model
- 使用Django开发一个图书管理系统------02-需求分析设计
- 使用Django开发一个图书管理系统
- 使用Django开发一个图书管理系统------01 准备篇
- 使用Django开发一个图书管理系统 05---改造界面
- 使用nodejs、ejsExcel、express、vuejs编写一个excel转json的工具——第一步:创建vuejs项目并搭建开发环境
- 使用Django开发一个图书管理系统 05---改造界面
- 使用django开发一个web项目初试
- django开发项目实例1--建立一个项目并初步运行
- 使用Django开发一个图书管理系统------01 准备篇
- 使用Django开发一个ToDoList小项目
- 使用Django开发一个图书管理系统------02-需求分析设计
- 使用Django开发一个图书管理系统----04.通过admin模块管理我们的app和model
- 使用 Eclipse 的 Maven 2 插件开发一个 JEE 项目
- 建立一个更高级别的查询 API:正确使用Django ORM 的方式 - 技术翻译 - 开源中国 OSChina.NET
- 一个使用django开发的综合成绩管理系统 显示不了验证码
- 推荐一个前端开发的使用服务器环境开源项目 D2Server 可替代Apache
- ulipad在xp下的安装及使用UliPad进行Django项目开发
- 使用Away3D 4 和 Stage 3D创建3D游戏以及应用程序—第一部分:30分钟内建立一个3D项目