要创建你的app(将django配置到环境变量下)
python manage.py startapp polls
它们将会创建一个polls文件夹,里面的内容是:
polls/
__init__.py
models.py
views.py
这个目录结构就是app应用程序。
编写数据库Web应用程序的第一步是定义你的模型层——基本上就是你的数据库的布局,但添加了些额外的元数据。
在我们的简单的poll app中,我们将会创建三个模型:Actor, Publisher,Film.。把文件polls/models.py编辑成如下面的样子:
这些代码都比较简单直观。每个模型都对应一个类,它是django.db.models.Model的子类。每个模型都包含有一些类级变量,它们代表数据库的字段。
每个字段都是Field类的实例——如,CharField是character字段,DateTimeField是日期字段。这些变量告诉Django字段保存的数据类型。
Field实例名(如question或pub_date)是字段的名字。你可以在Python代码中使用它们,也可以在数据库中作为列名使用,我们不加id,因为python会自动帮我们生成一个自增的id值。
你可以使用第一个可选的参数来定义Field的人性化的名字。它在Django中作为提示的内容。如果这个字段没有提供,Django将使用对机器易读的名字。在这个例子中,我们只为Poll.pub_date定义了人性化的名字。模型中的其它字段都是使用对机器易读,对人不易阅读的名字
最后,关注一下关联的定义,使用ForeignKey。它告诉Django每个Choice和一个Poll关联。Django提供有所有常用的数据库关联:多对一,多对多,一对一。
这些少量的模型代码给了Django大量的信息。通过它,Django能够做这些事情:
1.为这个app创建数据库的架构信息(CREATE TABLE 声明)。
2.创建Python的数据库访问API来获取Poll和Choice对象。
但首先,我们要告诉我们的project,polls app已经安装好了。
再次编辑settings.py文件,修改INSTALLED_APPS的设置,加入字符串'polls'。这样,它的代码看起来如下:
polls就是app的名字。python会找polls下的models.py去生成对应数据库表
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'polls'
)
因为我用的是mysql5.5,python2.6,所以要下对应的python-mysql的包,地址是:http://sourceforge.net/projects/mysql-python
先安装setuptools
下载http://sourceforge.net/projects/mysql-python
安装mysqldb后,运行会出现异常
1.ImportError: DLL load failed: 找不到指定的模块。
ImportError: DLL load failed: 找不到指定的程序。
libmySQL.dll
libguide40.dll
libmmd.dll
把三个dll
----------------------------------------------------------------------------------------------------
解决方法:把mysql安装目录的bin/libmySQL.dll文件复制到python安装目录的Lib/site-packages下
利用module配置文件,生成mysql的表:
python manage.py syncdb
提示:
Creating table auth_permission
Creating table auth_group
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table film_actor
Creating table film_publisher
Creating table film_film
You just installed Django's auth system, which means you don't have any superuse
rs defined.
Would you like to create one now? (yes/no):
对应的数据表生成成功