1.MTV模式
Django 里关注的是模型(Model)、模板(Template)和视图(Views),Django 也被称为 MTV 框架 。在 MTV 开发模式中:
M 代表模型(Model),即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
T 代表模板(Template),即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
V 代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作模型与模板之间的桥梁。
2. 数据库配置
数据库的配置文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Django使用哪个数据库引擎
'NAME': '******', # 将数据库名称告知 Django
'USER': 'root', # 告诉 Django 用哪个用户连接数据库
'PASSWORD': '*********', # 告诉Django连接用户的密码
'HOST': '127.0.0.1', # 告诉 Django 连接哪一台主机的数据库服务器
'PORT': '3306', # 端口号
}
}
3. 创建应用程序
在`` mysite`` 项目文件下输入下面的命令来创建`` books`` app:
python manage.py startapp books
这个命令在mysite目录下创建了一个books目录。这个目录包含:
books/
__init__.py
models.py
tests.py
views.py
在Python代码里定义模型
MTV里的M代表模型。 Django模型是用Python代码形式表述的数据在数据库中的定义。对数据层来说它等同于 CREATE TABLE 语句,只不过执行的是Python代码而不是 SQL,而且还包含了比数据库字段定义更多的含义。 Django用模型在后台执行SQL代码并把结果用Python的数据结构来描述。 Django也使用模型来呈现SQL无法处理的高级概念。
这里使用MySQL数据库,首先,在MySQL中创建数据库: CREATE DATABASE books
在这个数据库中,有 书籍/作者/出版商 三张表。这三张表的概念,字段,关系如下:
一个作者有姓,有名及email地址。
出版商有名称,地址,所在城市、省,国家,网站。
书籍有书名和出版日期。 它有一个或多个作者(和作者是多对多的关联关系[many-to-many]), 只有一
个出版商(和出版商是一对多的关联关系[one-to-many],也被称作外键[foreign key])
打开books文件夹下的models.py。添加如下代码:
# coding=utf-8
from django.db import models
# Create your models here.
# 创建表
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
city = models.CharField(max_length=60)
state_province = models.CharField(max_length=30)
country = models.CharField(max_length=50)
website = models.URLField()
def __unicode__(self):
return self.name
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField()
def __unicode__(self):
return u'%s %s' % (self.first_name, self.last_name)
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
def __unicode__(self):
return self.title
这些代码相当于SQL语句的CREATE TABLE XXX.....
模型安装:
现在需要在数据库中创建表。首先在 Django 项目中 激活这些模型。 将 books app 添加到配置文件的已安装应用列表中即可完成此步骤。
再次编辑 settings.py 文件, 找到 INSTALLED_APPS 设置。 INSTALLED_APPS 告诉 Django 项目哪些 app 处于激活状态。(将默认代码临时注释掉)
INSTALLED_APPS = (
# 'django.contrib.admin',
# 'django.contrib.auth',
# 'django.contrib.contenttypes',
# 'django.contrib.sessions',
# 'django.contrib.messages',
# 'django.contrib.staticfiles',
'books', # 应用名称
)
用虾米的命令验证模型的有效性:
python manage.py validate
如果模型正确:
运行下面的命令来生成 CREATE TABLE 语句
python manage.py sqlall books
在这个命令行中, books 是app的名称。 和你运行 manage.py startapp 中的一样
用下面语句同步数据库:
python manage.py syncdb
执行成功之后,在数据库中用SHOW TABLES,查看同步结果:
基本数据访问
创建了模型,Django自动为这些模型提供了高级的Python API。 运行 python manage.py shell。
>>> from books.models import Publisher
>>> p1 = Publisher(name='Apress', address='2855 Telegraph Avenue',
... city='Berkeley', state_province='CA', country='U.S.A.',
... website='http://www.apress.com/')
>>> p1.save()
>>> p2 = Publisher(name="O'Reilly", address='10 Fawcett St.',
... city='Cambridge', state_province='MA', country='U.S.A.',
... website='http://www.oreilly.com/')
>>> p2.save()
>>> publisher_list = Publisher.objects.all()
>>> publisher_list
[<Publisher: Apress>, <Publisher: O'Reilly>]
我们把Django中的方法与对应的SQL语句做对比:
方法 | Django | SQL |
---|---|---|
插入数据 |
|
|
更新数据 |
|
|
选择对象 |
|
|
数据过滤 |
|
|
获取单个对象 |
| |
数据排序 |
|
|
连锁查询 |
|
|
限制返回的数据 |
|
|
更新多个对象 |
|
|
删除对象 |
|
笔记来自《Django中文教程》
转载于:https://blog.51cto.com/4440271/1656532