好啦,由于刚才我们已经runserver了,所以刚才的终端就已经不能再输入任何指令了,因为那个终端在保持server运行

所以我们再来打开一个cmd

然后cd到manage.py目录,激活该虚拟环境后再执行startapp:

ll_env\scripts\activate

python manage.py startapp learning_logs

dir后我们发现它创建了一个learning_logs的文件夹

命令startapp XXXX 让Django建立创建应用程序所需的基础设施,如果现在查看该目录,将看到其中新增了一个文件夹learning_logs

打开learning_logs看看里面都有什么

dir learning_logs

其中最重要的文件是 models.py   admin.py和views.py

我们使用models.py 来定义我们要在应用程序中管理的数据

admin.py和views.py以后再说啦

定义模型

打开models.py,我们看看他当前包含的内容

from django.db import models

# Create your models here.
他只是为我们导入了models模块,其他什么也没有做

注译里面还让我们创建自己的模型

模型告诉Django如何处理应用程序中存储的数据,在代码层面模型其实就是一个类(class).包含属性和方法.

下面表示用户将要存储的主题模型

form django.db import models


class Topic(models.Model):

    '''用户学习的主题'''

    text = models.CharField(max_length=200)

    date_added = models.DateTimeField(auto_now_add=True)

    

    def __str__(self):

    '''返回模型的字符串表示'''

    return self.text

我们创建了一个名为Topic的类,它继承了Model   Django中一个定义了模型基本功能的类.Topic只有两个属性 text和date_addel

属性text是一个CharField:由字符或文本组成的数据,需要存储少量文本,如名称 标题或城市时,可使用CharField 定于CharField时,必须告诉Django该数据库中预留多少空间

在这里 我们将max_length设置为200个字符,这对存储大多数主题名来说足够大了

属性date_added是一个DateTimeField:记录日期和时间的数据.我们传递了实参auto_now_add=True,每当用户创建新主题时,这都让Django将这个属性自动设置成当前日期和时间


我们需要告诉Django,默认应使用哪个属性来显示有关主题的信息.Django调用方法__str__()来显示模型的简单表示,在这里我们编写了__str__(),他返回存储在属性text中的字符串


激活模型

要使用模型,必须让Django将应用程序包含到项目中,为此,打开settings.py()它位于目录learning_long的learning_log里

打开后里面有这样一个片段,即告诉Django哪些应用程序安装在项目中:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
这是一个元组,当然我是py3.7版本,打开之后发现这不是一个元组,这是一个列表.

这个列表告诉Django项目是由哪些应用程序组成的, INSTALLED_APPS

将前面的应用程序添加进去变成:


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    #我的应用程序

    'learning_logs',
]

保存一下关闭.

通过将应用程序编组,在项目不断增大包含更多的应用程序时,有助于对应用程序进行跟踪,这里新建一个名为My apps的片段,当前它只包含learning_logs

    接下来,需要让Django修改数据库,使其能够存储模型Topic相关的信息,为此在终端执行以下命令:

python manage.py makemigrations learning_logs


Migrations for 'learning_logs':
  learning_logs\migrations\0001_initial.py
    - Create model Topic

命令makemigrations让Django确定该如何修改数据库,使其能够存储与我们定义的新模型相关联的数据,输出表面Django创建了一个名为0001_initial.py的迁移文件.

这个文件将在数据库中为Topic创建一个表

    下面来应用这种迁移(修改),让Django替我们修改数据库:

python manage.py migrate


Operations to perform:
  Apply all migrations: admin, auth, contenttypes, learning_logs, sessions
Running migrations:
  Applying learning_logs.0001_initial... OK

这个命令的大部分输出都与我们首次执行命令migrate的输出相同,我们需要检查的是最后一行输出,在这里Django确认为lraring_logs应用修改时一切正常(OK)

    每当需要修改管理数据时,都采取如下三个步骤:

    1:修改models.py  2:对learing_logs调用makemigrations    3:让Django修改项目


最后修改:2022 年 12 月 05 日
如果觉得我的文章对你有用,请随意赞赏