现在,打开mysite/settings.py
。这是一个普通的Python模块,具有表示Django设置的模块级变量。
默认情况下,配置使用SQLite。如果您不熟悉数据库,或者只是对尝试使用Django感兴趣,这是最简单的选择。SQLite包含在Python中,因此您不需要安装其他任何东西即可支持数据库。但是,在开始第一个实际项目时,您可能希望使用可扩展性更高的数据库(例如PostgreSQL),以避免数据库切换麻烦。
如果要使用另一个数据库,请安装适当的数据库绑定并在项目中更改以下键 以匹配您的数据库连接设置:DATABASES
‘default‘
ENGINE
-要么 ‘django.db.backends.sqlite3‘
, ‘django.db.backends.postgresql‘
, ‘django.db.backends.mysql‘
,或 ‘django.db.backends.oracle‘
。也可以使用其他后端。NAME
–数据库的名称。如果您使用的是SQLite,则数据库将是您计算机上的文件;在这种情况下,NAME
应为该文件的完整绝对路径,包括文件名。默认值会将文件存储在您的项目目录中。os.path.join(BASE_DIR, ‘db.sqlite3‘)
如果你不使用SQLite作为数据库,如其他设置 USER
,PASSWORD
以及HOST
必须增加。
在编辑时mysite/settings.py
,将其设置TIME_ZONE
为您的时区。
另外,请注意INSTALLED_APPS
文件顶部的设置。该名称包含在此Django实例中激活的所有Django应用程序的名称。应用程序可以在多个项目中使用,您可以打包和分发这些应用程序,以供其他人在其项目中使用。
默认情况下,INSTALLED_APPS
包含以下应用程序,所有这些应用程序都随Django一起提供:
django.contrib.admin
–管理站点。您将很快使用它。django.contrib.auth
–认证系统。django.contrib.contenttypes
–内容类型的框架。django.contrib.sessions
–会话框架。django.contrib.messages
–消息传递框架。django.contrib.staticfiles
–用于管理静态文件的框架。默认情况下,这些应用程序是为方便起见而包含的。
现在,我们将定义您的模型-本质上是您的数据库布局以及其他元数据。
在我们的民意调查应用中,我们将创建两个模型:Question
和Choice
。
一个 Question
有一个问题和出版日期。A Choice
有两个字段:选择的文本和一个投票计数。每个Choice
都与关联Question
。
这些概念由Python类表示。编辑 polls/models.py
文件,使其如下所示:
注意使用定义了一个关系 ForeignKey
。这告诉Django每个Choice
都与一个相关Question
。Django支持所有常见的数据库关系:多对一,多对多和一对一。
少量的模型代码为Django提供了很多信息。有了它,Django能够:
CREATE TABLE
Question
和Choice
对象的Python数据库访问API 。但是首先我们需要告诉我们的项目该polls
应用程序已安装。
要将应用程序包含在我们的项目中,我们需要在设置中添加对其配置类的引用INSTALLED_APPS
。
该 PollsConfig
班是在polls/apps.py
文件中,所以它的虚线路径‘polls.apps.PollsConfig‘
。
编辑mysite/settings.py
文件,并将该虚线路径添加到INSTALLED_APPS
设置中。它看起来像这样:
现在Django知道会包含该polls
应用程序。让我们运行另一个命令:
python manage.py makemigrations polls
执行的时候应该会报错,只需要安装 “pip install mysqlclient” 即可解决,如果已经安装可以uninstall之后,在install
您应该看到类似于以下内容:
然后取数据库查看对应的表polls_choice 和 polls_question。
迁移是Django存储对模型(以及数据库模式)所做更改的方式-它们是磁盘上的文件。如果愿意,您可以阅读新模型的迁移;这是文件polls/migrations/0001_initial.py
。不用担心,您不会期望每次Django都读入它们,但是如果您想手动调整Django的更改方式,则可以对它们进行人工编辑。
有一个命令将为您运行迁移并自动管理您的数据库模式-称为migrate
,稍后我们将介绍它-但首先让我们看看将运行哪种SQL。该 sqlmigrate
命令采用迁移名称并返回其SQL:
$ python manage.py sqlmigrate polls 0001
您应该看到类似以下内容的内容(为了便于阅读,我们对其进行了重新格式化):
请注意以下几点:
polls
)与模型的小写名称– question
和组合而成的 choice
。(您可以覆盖此行为。)"_id"
到外键字段名称。(是的,您也可以覆盖它。)FOREIGN KEY
DEFERRABLE
auto_increment
(MySQL),serial
(PostgreSQL)或(SQLite)。字段名称的引用也是如此–例如,使用双引号或单引号。integer primary key autoincrement
sqlmigrate
命令实际上并未在数据库上运行迁移-而是将其打印到屏幕上,以便您可以查看Django认为需要的SQL。这对于检查Django将要执行的操作或是否有需要SQL脚本进行更改的数据库管理员很有用。如果您有兴趣,也可以运行 ;这样可以检查项目中是否存在任何问题,而无需进行迁移或接触数据库。
现在,migrate
再次运行以在数据库中创建那些模型表:
python manage.py migrate
该migrate
命令获取所有尚未应用的迁移(Django使用名为的特殊表在数据库中跟踪应用了哪些迁移django_migrations
),并针对您的数据库运行它们-本质上,将您对模型所做的更改与数据库。
迁移功能非常强大,可以在开发项目时随时间更改模型,而无需删除数据库或表并创建新的模型-它专门用于实时升级数据库而不会丢失数据。我们将在本教程的后面部分中更深入地介绍它们,但是现在,请记住进行模型更改的三步指南:
models.py
)。python manage.py makemigrations
python manage.py migrate
之所以使用单独的命令来进行和应用迁移,是因为您会将迁移提交到版本控制系统,并随应用程序一起交付;它们不仅使您的开发更加容易,而且还可以被其他开发人员和生产环境使用。
现在,让我们跳入交互式Python外壳并尝试使用Django提供的免费API。要调用Python Shell,请使用以下命令:
$ python manage.py shell
我们使用它而不是简单地输入“ python”,因为它manage.py
设置了DJANGO_SETTINGS_MODULE
环境变量,该变量为Django提供了到mysite/settings.py
文件的Python导入路径。
进入Shell后,探索数据库API:
向模型中添加方法
保存这些更改,然后再次运行以启动新的Python交互式shell :python manage.py shell
原文:https://www.cnblogs.com/leon-joker/p/12861128.html