(转)Django ====> 实战学习篇二 需求分析及设计,创建第一个模型---购物车的应用

#####购物车应用:

角色:买方,卖方

用例:买方----浏览产品,创建订单

          卖方-----管理查品,管理订单,管理发货

界面设计:

买方:

  1. 目录页明显查品信息,可以选择一个产品,打开购物车界面,同时加入车
  2. 购物车界面,可以返回产品目录界面,也可以进入支付界面
  3. 订单界面,填写必要信息,确认后显示收据页面
  4. 收据页面,通知买方订单已经被接受

卖方:

  1. 登录界面,管理产品要登录系统,登录后显示菜单界面
  2. 包含产品维护和订单查看
  3. 创建长品界面,加入查品
  4. 产品信息页面,可修改或者删除
  5. 订单处理界面,可忽略或者处理

敏捷开发,尽快开始开发。迭代的过程中会逐渐明确,接下来第一轮迭代开发。

####创建第一个模型:

        从模型开始是一个好的主义,模型是整个数据的核心,实现了应用数据的业务和对业务数据进行操作的约束,二模板和视图都是操作和显示这些数据的界面;还有就是模型相对于其他部分相对稳定,模型确定下来有助于其他部分的开发。

        Depot应用来看,产品Product是模型中的关键部分,先来实现它。

Django 约定要建立app才能使用模型,django的哲学之一;
一个app是一套django的功能集合,包括模型和视图,以python包的形式存在;
app在多个project之间可以复用。

python manage.py startapp depotapp 

在工程目录下创建一个depotapp目录
用Python代码定义数据库:出于以下原因

     1. 效率。运行时扫描数据库能会带来性能问题。
     2. 明确性。只通过Mode可l类就完全知道数据库中有哪些字段,而不需要再切换到migration或schema文件中去查看,更不需要去查看数据库结构。
3. 一致性。你看到的只是Python代码,完全不需要将大脑切换到”数据库模式“,能极大提高开发效率。
     4. 版本控制。rails中的数据库结构版本保存在一个个的migration文件中,这简直就是版本管理的”反模式“。Django的方式是管理Model代码文件的版本。
     5. 可扩展性。可以定义数据库中不存在的”字段类型“。比如Email,URL,等等。
     当然,Django也提供从现有数据库表中自动扫描生成模型的工具。
编写下边的Model类:
from django.db import models

class Product(models.Model):
     title          = models.CharField(max_length=100)
     description     = models.TextField()
     image_url     = models.CharField(max_length=200)
     price          = models.DecimalField(max_digits=8,decimal_places=2)

 如同其他的orm,Id字段是默认声明的不需要单独处理

    部署模型:

  修改setting文件中的数据库和app部分如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'db/development.sqlite3',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    }
}


INSTALLED_APPS = (
    #'django.contrib.auth',
    #'django.contrib.contenttypes',
    #'django.contrib.sessions',
    #'django.contrib.sites',
    #'django.contrib.messages',
    #'django.contrib.staticfiles',
   
     # Uncomment the next line to enable the admin:
    # 'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
      'depot.depotapp',
)

   验证模型情况:

python manage.py validate
0 errors found

  查看model生成的数据库:

python manage.py sqlall depotapp 
BEGIN;
CREATE TABLE "depotapp_product" (
    "id" integer NOT NULL PRIMARY KEY,
    "title" varchar(30) NOT NULL,
    "description" text NOT NULL,
    "image_url" varchar(200) NOT NULL,
    "price" decimal NOT NULL
)
;
COMMIT;

  将模型导入数据库:

python manage.py syncdb

  完成第一个模型的创建

 






 


posted @ 2012-09-24 20:47  事件轮询,回不到过去  阅读(697)  评论(0编辑  收藏  举报