被解救的Django【3】

来源:互联网 发布:ubuntu 修改ip 编辑:程序博客网 时间:2024/06/05 13:33

激活模型


模型代码(polls/models.py)给了Django很多信息,有了这些代码,Django就能够自动完成以下两个功能:

A:为该应用创建数据库表(CREATE TABLE 语句)。

B:为Question对象和Choice对象创建一个访问数据库的python API。


但是,首先得告诉项目:polls应用已经安装。 

原理:Django 应用是可以“热插拔”的,即可以在多个项目中使用同一个应用,也可以分发这些应用, 因为它们不需要与某个特定的Django安装绑定。

再次编辑mysite/settings.py文件,并修改INSTALLED_APPS设置以包含字符串'polls'。所以它现在是这样的:




现在Django知道要包含polls应用。 让我们运行另外一个命令:

$python manage.py makemigrations polls



通过运行makemigrations告诉Django,已经对模型做了一些更改(在这个例子中,你创建了一个新的模型)并且会将这些更改记录为迁移文件


迁移是 Django 如何储存模型的变化(以及您的数据库模式),它们只是磁盘上的文件。如果愿意,你可以阅读这些为新模型建立的迁移文件;这个迁移文件就是  polls/migrations/0001_initial.py。不用担心,Django不要求你在每次Django生成迁移文件之后都要阅读这些文件,但是它们被设计成可人为编辑的形式,以便你可以手工稍微修改一下Django的某些具体行为。

有一个命令可以运行这些迁移文件并自动管理你的数据库模式—— 它叫做migrate,我们一会儿会用到它 —— 但是首先,让我们看一下迁移行为将会执行哪些SQL语句。sqlmigrate命令接收迁移文件的名字并返回它们的SQL语句:


$python manage.py sqlmigrate polls 0001

 

会看到类似如下的内容(本例使用的sqlite数据库)




注意:

1.      输出的具体内容会依据你使用的数据库而不同。 以上例子使用的数据库是sqlite。

2.      表名是自动生成的,由app的名字(polls)和模型名字的小写字母组合而成 —— question和choice。(你可以重写这个行为。)

3.      主键(id)是自动添加的。(你也可以重写这个行为。)

4.      按照惯例,Django会在外键的字段名后面添加 "_id"。(是的,你依然可以重写这个行为。)

5.      外键关系由FOREIGN KEY约束显式声明。不用在意DEFERRABLE部分;它只是告诉PostgreSQL直到事务的最后再执行外键关联。

6.      这些SQL语句是针对你所使用的数据库定制的,所以会为你自动处理某些数据库所特有的字段例如auto_increment (MySQL)、 serial (PostgreSQL)或integer primary keyautoincrement (SQLite) 。在处理字段名的引号时也是如此 ——例如,使用双引号还是单引号。

7.      sqlmigrate命令并不会在你的数据库上真正运行迁移文件 ——它只是把Django 认为需要的SQL打印在屏幕上以让你能够看到。 这对于检查Django将要进行的数据库操作或者你的数据库管理员需要这些SQL脚本是非常有用的。


再次运行migrate以在你的数据库中创建模型所对应的表

$ python manage.py migrate




migrate命令会找出所有还没有被应用的迁移文件,Django使用数据库中一个叫做django_migrations的特殊表来追踪哪些迁移文件已经被应用过,并且在你的数据库上运行它们。本质上来讲,就是使你的数据库模式和你改动后的模型进行同步。迁移功能非常强大,可以让你在开发过程中不断修改你的模型而不用删除数据库或者表,然后再重新生成一个新的,它专注于升级你的数据库且不丢失数据。


实现模型变更的三个步骤:

Step one:修改你的模型(在models.py文件中)。

Step two:运行python manage.py makemigrations ,为这些修改创建迁移文件

Step three:运行python manage.py migrate ,将这些改变更新到数据库中。


玩转API

现在,让我们进入Python的交互式shell,玩转这些Django提供给你的API。 使用如下命令来调用Python shell:

   $ python manage.py shell



我们使用上述命令而不是简单地键入“python”进入python环境,是因为manage.py 设置了DJANGO_SETTINGS_MODULE 环境变量,该环境变量告诉Django导入mysite/settings.py文件的路径。


打开manage.py 



进入shell命令行:




代码解释如下:






保存这些改动,然后通过python manage.py shell再次打开一个新的Python 交互式shell:



创建一个管理员用户


首先,我们需要创建一个能够登录管理站点的用户。 运行如下命令:

$ python manage.py createsuperuser
 

键入你想要使用的用户名,然后按下回车键:

Username: admin

 

然后提示你输入想要使用的邮件地址:

Email address: admin@example.com
 

你需要输入两次密码,第二次输入是确认密码

Password: **********
Password (again): *********
Superuser created successfully.


密码为123456


启动开发服务器

 

Django的管理站点是默认启用的。 让我们启动开发服务器,然后探索它,使用下面的命令来启动开发服务器

$ python manage.py runserver



打开一个浏览器访问你本地域名中的“/admin/”,例如:

http://127.0.0.1:8000/admin/login/?next=/admin/




进入管理站点

用在前面创建的超级用户账号来登录这个站点,应该会看到Django管理站点的首页面:



 

将看到几类可编辑的内容:groups和users。 它们是由django.contrib.auth提供的,这个认证框架集成在Django中。

 

让poll应用在管理站点中可编辑

需要打开polls/admin.py文件,把它编辑成这样:




探索管理站点的功能

现在,我们已经在管理站点中注册了Question对象,Django应该把它显示在管理站点的首页面上:

此时关闭命令行窗口,重新开启服务器。




刷新浏览器url地址







原创粉丝点击