首页 > 其他 > 详细

Django 编写您的第一个Django应用 二

时间:2020-05-10 00:44:25      阅读:85      评论:0      收藏:0      [点我收藏+]

数据库设置

现在,打开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作为数据库,如其他设置 USERPASSWORD以及HOST必须增加。

在编辑时mysite/settings.py,将其设置TIME_ZONE为您的时区。

另外,请注意INSTALLED_APPS文件顶部设置。该名称包含在此Django实例中激活的所有Django应用程序的名称。应用程序可以在多个项目中使用,您可以打包和分发这些应用程序,以供其他人在其项目中使用。

默认情况下,INSTALLED_APPS包含以下应用程序,所有这些应用程序都随Django一起提供:

默认情况下,这些应用程序是为方便起见而包含的。

创建模型

现在,我们将定义您的模型-本质上是您的数据库布局以及其他元数据。

在我们的民意调查应用中,我们将创建两个模型:QuestionChoice

一个 Question有一个问题和出版日期。Choice有两个字段:选择的文本和一个投票计数。每个Choice都与关联Question

这些概念由Python类表示。编辑 polls/models.py文件,使其如下所示:

技术分享图片

 

 注意使用定义了一个关系 ForeignKey这告诉Django每个Choice都与一个相关QuestionDjango支持所有常见的数据库关系:多对一,多对多和一对一。

激活模型

少量的模型代码为Django提供了很多信息。有了它,Django能够:

  • 为此应用程序创建数据库架构(语句)。CREATE TABLE
  • 创建用于访问QuestionChoice对象的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)。(您也可以覆盖它。)
  • 按照约定,Django将附加"_id"到外键字段名称。(是的,您也可以覆盖它。)
  • 通过 约束使外键关系明确不用担心零件;它告诉PostgreSQL在事务结束之前不要执行外键。FOREIGN KEYDEFERRABLE
  • 它是针对您正在使用的数据库量身定制的,因此将自动为您处理特定于数据库的字段类型,例如auto_increment(MySQL),serial(PostgreSQL)或(SQLite)。字段名称的引用也是如此–例如,使用双引号或单引号。integer primary key autoincrement
  • sqlmigrate命令实际上并未在数据库上运行迁移-而是将其打印到屏幕上,以便您可以查看Django认为需要的SQL。这对于检查Django将要执行的操作或是否有需要SQL脚本进行更改的数据库管理员很有用。

如果您有兴趣,也可以运行 这样可以检查项目中是否存在任何问题,而无需进行迁移或接触数据库。

python manage.py check

现在,migrate再次运行以在数据库中创建那些模型表:

python manage.py migrate

技术分享图片

 

 

migrate命令获取所有尚未应用的迁移(Django使用名为的特殊表在数据库中跟踪应用了哪些迁移django_migrations),并针对您的数据库运行它们-本质上,将您对模型所做的更改与数据库。

迁移功能非常强大,可以在开发项目时随时间更改模型,而无需删除数据库或表并创建新的模型-它专门用于实时升级数据库而不会丢失数据。我们将在本教程的后面部分中更深入地介绍它们,但是现在,请记住进行模型更改的三步指南:

之所以使用单独的命令来进行和应用迁移,是因为您会将迁移提交到版本控制系统,并随应用程序一起交付;它们不仅使您的开发更加容易,而且还可以被其他开发人员和生产环境使用。

Playing with the API

现在,让我们跳入交互式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

技术分享图片

 

 技术分享图片

 

 

Django 编写您的第一个Django应用 二

原文:https://www.cnblogs.com/leon-joker/p/12861128.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!