打开mysite/settings.py
配置文件,这是整个Django项目的设置中心。Django默认使用SQLite3数据库,因为Python原生支持SQLite3数据库,所以你无须安装任何程序,就可以直接使用它。当然,如果你是在创建一个实际的项目,可以使用类似MySQL的数据库,避免以后数据库迁移的相关问题。
如果你想使用其他的数据库,请先安装相应的数据库操作模块,并将settings文件中DATABASES位置的’default’
字典进行相应的修改,用于连接你的数据库。其中:
-
ENGINE(引擎):可以是
django.db.backends.sqlite3
、django.db.backends.postgresql
、django.db.backends.mysql
、django.db.backends.oracle
,当然其它的也行。 -
NAME(数据库名称):类似Mysql数据库管理系统中用于保存项目内容的数据库的名字。如果你使用的是默认的SQLite3,那么数据库将作为一个文件将存放在你的本地机器内,此时的NAME应该是这个文件的完整绝对路径包括文件名,默认情况下该文件储存在你的项目根目录下。
注意:
- 在使用非SQLite3数据库时,请务必预先在数据库管理系统的提示符交互模式下创建数据库,你可以使用命令:
CREATE DATABASE database_name;
。Django不会自动帮你做这一步工作。 - 确保你在settings文件中提供的数据库用户具有创建数据库表的权限,因为在接下来的教程中,我们需要自动创建一个test数据表。(在实际项目中也需要确认这一条要求。)
- 如果你使用的是SQLite3,那么你无需做任何预先配置,直接使用就可以了。
在修改settings文件时,请顺便将TIME_ZONE
设置为国内所在的时区Asia/Shanghai
,这样显示的就是我们北京时间。
同时,请注意settings文件中顶部的INSTALLED_APPS
设置项。它列出了所有的项目中被激活的Django应用(app)。你必须将你自己创建的app注册在这里。每个应用可以被多个项目使用,并且可以打包和分发给其他人在他们的项目中使用。
默认情况,INSTALLED_APPS
中会自动包含下列条目,它们都是Django自动生成的:
- django.contrib.admin:admin管理后台站点
- django.contrib.auth:身份认证系统
- django.contrib.contenttypes:内容类型框架
- django.contrib.sessions:会话框架
- django.contrib.messages:消息框架
- django.contrib.staticfiles:静态文件管理框架
上面的那些应用会默认被启动,并且也需要建立一些数据库表,所以在使用它们之前我们要在数据库中创建这些表。使用下面的命令创建数据表:
$ python manage.py migrate
migrate命令将遍历INSTALLED_APPS
设置中的所有项目,在数据库中创建对应的表,并打印出每一条动作信息。如果你感兴趣,可以在你的数据库命令行下输入:\dt
(PostgreSQL)、 SHOW TABLES;
(MySQL)或 .schema
(SQLite3) 来列出 Django 所创建的表。
提示:对于极简主义者,你完全可以在INSTALLED_APPS
内注释掉任何或者全部的Django提供的通用应用。这样,migrate也不会再创建对应的数据表。
定义模型model,模型本质上就是数据库表的布局,再附加一些元数据。
Django通过自定义Python类的形式来定义具体的模型,每个模型的物理存在方式就是一个Python的类Class,每个模型代表数据库中的一张表,每个类的实例代表数据表中的一行数据,类中的每个变量代表数据表中的一列字段。Django通过模型,将Python代码和数据库操作结合起来,实现对SQL查询语言的封装。也就是说,你可以不会管理数据库,可以不会SQL语言,你同样能通过Python的代码进行数据库的操作,这就是所谓的ORM。Django通过ORM对数据库进行操作,奉行代码优先的理念,将Python程序员和数据库管理员进行分工解耦。
通过运行makemigrations
命令,Django 会检测你对模型文件的修改,也就是告诉Django你对模型有改动,并且你想把这些改动保存为一个“迁移(migration)
”。
migrations
是Django保存模型修改记录的文件,这些文件保存在磁盘上。在例子中,它就是polls/migrations/0001_initial.py
,你可以打开它看看,里面保存的都是人类可读并且可编辑的内容,方便你随时手动修改。
在实际环境中,为了站点的安全性,我们一般不能将管理后台的url随便暴露给他人,不能用/admin/
这么简单的路径。
可以将根url路由文件mysite/urls.py
中admin.site.urls
对应的表达式,换成你想要的,比如:
``` from django.contrib import admin from django.urls import path
urlpatterns = [ path('polls/', include('polls.urls')), path('control/', admin.site.urls), ] ```
这样,我们必须访问http://127.0.0.1:8000/control/
才能进入admin界面。