Django学习笔记----settings and database_based App demo

原文参考docs.djangoproject.com, what can manage.py utility do? find here.


1.Database Setup

编辑settings.py文件,配置数据库,包括provider和数据库(文件路径)名称,然后保存(不确定要不要compile下)。如果为SQLite,使用此操作自动创建数据库文件(给出绝对路径名c:/blah/blah/demoDB.db,engine:'django.db.backends.sqlite3')

使用:python manage.py syncdb


2.设置Time Zone等

默认为美国中部时间Chicago


3.Installed_apps

settings.py文件底部默认有几个apps:

  PS:上边每个app都至少使用数据库中一张表,所以有必要时使用python manage.py syncdb来创建db file.这个命令会查找installed_apps中给出的信息和settings.py中数据库配置信息来创建数据库和表。当注释掉某些默认apps时,此命令只为installed_apps中未注释的apps创建table.

  一个app可以通过package和distribute操作,将其运用在多个project里。


3.Create models(with an app demo called Polls)

  每个使用Django所写的app都是一个Python包,根据约定会在Python下有相应的路径。整个app基本目录结构都由Django自带的utility来完成,我们只需要focus到代码部分。

  app和project的区别:个人理解,相当于VS下的project和solution的区别。一个app可属于多个project,一个project可包含多个apps和相关配置文件.

  项目可以在python的任何路径下,如:python manage.py startapp polls;对应polls文件夹下就有 __init__.py,models.py,tests.py,views.py四个文件。

  1.创建基于数据库的web app首先要定义models(数据的layout,包括fields和数据上的操作);Django也遵循DRY原则,一处定义,多处继承;

  2.创建两个model,每个Choice都与一个Poll相关联,编辑app文件夹下的model.py文件,如下:

    from django.db import models
    class Poll(models.Model):
        question = models.CharField(max_length=200)
        pub_date = models.DateTimeField('date published')
    class Choice(models.Model):
        poll = models.ForeignKey(Poll)            #外键,Django支持many-to-ones,many-to-manys,one-to-ones.
        choice_text = models.CharField(max_length=200)  #Field class给出类型,某些类型需要参数以作两用:db schema和validation.
        votes = models.IntegerField(default=0)         #choice_text and votes为存储在db中的字段名,可在python中使用其值。

    PS:每个model都由一个继承于models.Model的类来表示,每个model都有数个变量,每个变量代表model中的一个数据库字段;

  3.上边的定义可供Django: 1)为此app创建database schema(create table语句); 2)创建Pyhton用于访问Poll和Choice对象的API;

  4.首先得告诉project的是,polls app已经安装。Django下的apps都是插拔式的(pluggable),一个app可用于多个project(as showed above),我们可以distribute这些apps,因为这些apps并不耦合于其他Django installation(个人理解为不耦合于任何project);

  5.settings.py中加入此app[即polls];

  6.Run: python manage.py sql polls,告诉Django包含polls app:

    

  7.可选项:使用manage.py对数据库进行配置;

  8.Run: manage.py syncdb在数据库中创建model的tables;

    

  9.Run:manage.py shell进入shell,然后可以使用Database API操作刚定义的models(CRUD);

此demo原文来自:https://docs.djangoproject.com/en/1.5/intro/tutorial01/

原文地址:https://www.cnblogs.com/paul-cheung/p/3208236.html