您的位置:首页 > 移动开发

创建app-django

2015-01-21 20:22 253 查看

创建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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: