创建app-django

创建app-django

@(python)

创建app

Django规定,如果要使用模型,必须要创建一个app。在上一篇中我们创建的是project,project和app的区别就是:一个project包含很多个Django app以及对它们的配置,一个app是一套Django功能的集合,通常包括模型和视图,按Python的包结构的方式存在。下面的语句创建了一个名为users的app,这个目录包含了这个app的模型models.py和视图views.py,它们都是空的。

python manage.py startapp users

会生成一个user的文件夹,里面存有的文件如下:

-rw-rw-r-- 1 linaro linaro 0 Jan 11 07:29 init.py
-rw-rw-r-- 1 linaro linaro 63 Jan 11 07:29 admin.py
drwxrwxr-x 2 linaro linaro 4096 Jan 11 07:29 migrations/
-rw-rw-r-- 1 linaro linaro 57 Jan 11 07:29 models.py
-rw-rw-r-- 1 linaro linaro 60 Jan 11 07:29 tests.py
-rw-rw-r-- 1 linaro linaro 63 Jan 11 07:29 views.py

models.py:模型文件,用 Python 类来描述数据表。
views.py:视图文件,用来联系模型与模版,主要的业务逻辑一般都写在这里。
tests.py:单元测试文件,Python的test功能很强大

定义模型

构建一个保存用户信息的数据库(名字,性别,年龄,邮箱),修改users文件夹下的model.py文件,添加一下代码

class Info(models.Model):
    name = models.CharField(max_length=30)
    sex = models.CharField(max_length=4)
    age = models.IntegerField()
    email = models.EmailField()

最后需要注意的是,我们并没有显式地为这些模型定义任何主键。 除非你单独指明,否则Django会自动为每个模型生成一个自增长的整数主键字段每个Django模型都要求有单独的主键。id
在settings.py增加users app,

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'users',
)

创建数据表

  • 生成并激活model,执行python manage.py makemigrations users
    输出是
linaro@cubietruck:~/temp/mysite$ python manage.py makemigrations users
Migrations for 'users':
  0001_initial.py:
    - Create model Info
  • 生成数据表,执行python manage.py migrate
    输出是
linaro@cubietruck:~/temp/mysite$ python manage.py migrate
Operations to perform:
  Apply all migrations: users
Running migrations:
  Rendering model states... DONE
  Applying users.0001_initial... OK

此时dtest数据库生成两个表,如下

+-------------------+
| Tables_in_dtest   |
+-------------------+
| django_migrations |
| users_info        |
+-------------------+
2 rows in set (0.00 sec)
mysql> select * from django_migrations;
+----+-------+--------------+---------------------+
| id | app   | name         | applied             |
+----+-------+--------------+---------------------+
|  1 | users | 0001_initial | 2010-01-11 07:55:33 |
+----+-------+--------------+---------------------+
1 row in set (0.00 sec)

每次修改models.py文件后都要重复以上步骤来激活models和更新数据库。
此时可以对数据表进行操作

>>> from users.models import Info
>>> Info.objects.all()                                                                                                                       
[]
>>> i = Info(name='liton',sex='male',age='18',email='qq@qq.com')
>>> Info.objects.all()
[]
>>> i.save()
>>> Info.objects.all()
[<Info: Info object>]
>>> i.name
'liton'
>>> i.email='qq@163.com'
>>> i.save()
>>> i.email
'qq@163.com'

查看数据表users_info ,可以看到新增的数据

mysql> select * from users_info;
+----+-------+------+-----+------------+
| id | name  | sex  | age | email      |
+----+-------+------+-----+------------+
|  1 | liton | male |  18 | qq@163.com |
+----+-------+------+-----+------------+
1 row in set (0.00 sec)
posted @ 2015-01-21 20:22  liton  阅读(413)  评论(0编辑  收藏  举报