仅仅是一个笔记。。。
这篇文章主要是单个model的保存,即将单个实体信息插入数据
包括应用的创建,模型的创建,保存模型的写法,测试方法
- 参考文档当然是经典的The Django Book (http://djangobook.py3k.cn/)(10/10/28注:前面的链接暂时已经不能访问,请参见官方文档 http://docs.djangoproject.com/en/1.2/),建议使用firefox浏览,因为我在同事的机器上用360什么的浏览器浏览发现会有一些奇怪的问题。
Django安装什么的直接略去,有时间再补上
- 新建一个项目:
诸如我们是要在目录下开始干活建项目E:\simon\project\django
启动命令行提示窗口,直接去这个目录E:\simon\project\django>c:\Python25\Lib\site-packages\django\bin\django-admin.py startproject firstproject
我们创建了一个firstproject这样的django工程
当然你可能已经发现我已经将python的安装路径(c:\python25)已经加到系统环境变量PATH中.
在E:\simon\project\django路径下发现多了firstproject这个目录,结构如下:
E:\simon\project\django>tree firstproject /a /F
E:\SIMON\PROJECT\DJANGO\FIRSTPROJECT
manage.py
settings.py
urls.py
__init__.py
没有子文件夹
简单的介绍下相关文件,其实从其名字上可以看出个大概:settings.py文件中包含了这个工程的配置信息,你可以配置这个工程的数据库配置信息,你这个工程所包含的应用(app)(app是一个小于工程的概念,也就是一个工程可能或包含很多app,关于更详细更专业的解释在这里http://djangobook.py3k.cn/chapter05/ “你的第一个应用程序” 这一段落的开头有解释 )信息等等;manage.py包含了很多管理你这个工程的动作,诸如你新增了一个(或一些)数据模型(model),那么你可以manage.py syncdb这样来同步到数据库;urls.py简单点说,里面写上了url跟你的应用的匹配。
好吧,我们现在就开始在settings.py中写上关于该工程的数据库的相关配置信息,我用mysql做示例,数据库名称为df(意思为django first,其实这个不重要)
如果你不是用的mysql做数据库,可以参考http://djangobook.py3k.cn/chapter05/ 数据库配置 这一节
DATABASES = {
'default': {
'ENGINE': 'mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'df', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': '123456', # Not used with sqlite3.
'HOST': 'localhost', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '3306', # Set to empty string for default. Not used with sqlite3.
}
}
1.启动开发服务器:
去firstproject目录下,运行 manage.py runserver
会得到这样的提示
Validating models...
0 errors found.
Django version 0.96.2, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
用浏览器访问:http://127.0.0.1:8000/
服务器成功启动
- 在刚才的工程下新建一个app,假设名为books
去firstproject目录下
cd firstproject
manage.py startapp books
我们再看下刚才的firstproject目录发生了怎样的变化
E:\SIMON\PROJECT\DJANGO\FIRSTPROJECT
| manage.py
| settings.py
| settings.pyc
| urls.py
| __init__.py
| __init__.pyc
|
\---books
models.py
tests.py
views.py
__init__.py
- 创建数据模型,做过j2ee的人可能都知道,做web应用,最最基础的就是要创建POJO类,然后通过ORM的框架,如hibernate之类的(当然或者可以用JDBC直接封装Helper类去操作)进行CRUD等等。那么在Django中,我们就直接将数据模型写在models.py中。在http://djangobook.py3k.cn/chapter05/(10/10/28注:前面的链接暂时已经不能访问,请参见官方文档 http://docs.djangoproject.com/en/1.2/topics/db/models/ 参考quick example)这篇文档中介绍创建book相关的模型,在这里,“你的第一个模型”这一节。在moedls.py中填完代码。(注意:如果你用的是django 1, 2, 1以上版本,要将代码中的maxlength更换为max_length,否则后续同步到数据库会出现错误)。
关于Django用到的Field类型在这里http://docs.djangoproject.com/en/dev/ref/models/fields/ Django官方有详细的文档
你不会没发现models.py在哪里吧,他在这里,就是刚才建的app books目录下面 J
- 当你的model数据模型建立完毕,你自然是想在数据库建立相应的表。想做到这一步需要两个步骤:
a) 在你的工程目录下的settings.py中的INSTALLED_APPS这个元祖中加上
‘firstproject.books’,
千万要记得写上末尾的逗号,否则你会恨惨… J
完成后像这样:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
'firstproject.books',
)
b) 最好先运行python manage.py validate 这是用来验证你刚才写你的模型的语法和逻辑是否正确
c) 在你工程目录下(不是你的应用目录下)run这样的command, manage.py syncdb
这样的就能在数据库建立与你刚才所建的数据模型对应的几张表
慢,等一下,因为我们在模型中用到了headshot = models.ImageField(upload_to='/tmp')
所以要安装PIL库,在这里http://www.pythonware.com/products/pil/
- model的创建工作我们已经做完,那么我们可以在python的交互式环境中可以做测试了,但是需要说明的是这个交互式环境不是像学python那会,直接c:\python25\python.exe启动,而是需要通过你的app所在目录下的manage.py去启动,
命令是这样的:python manage.py shell
写测试代码
去查询数据库
成功保存
当然也可以为Publisher这个model定义__str__()方法,这个方法的作用相当于java中的toString()方法
“为了让我们的修改生效,先退出Python Shell,然后再次运行 python manage.py shell 进入。 现在列出 Publisher 对象就很容易理解了:”
也就是重新启动cmd窗口,重新启shell
你要是未自己定义__str__()方法,就会得到像下面的这个结果
- 关于模型操作更详细的部分请看完 http://djangobook.py3k.cn/chapter05/ 文档。包括filter, __contains,delete,取部分结果集,排序等等