Nep

纯粹是个人兴趣的表达

Django入门(3)-models(模型)介绍

django与数据库

首先我们要知道,一个网站的数据,可以硬编码存放在html里,但是灵活性太低。之后,出现了数据存放在其他文件里,使用时从文件中读取。但是这样子不易于维护和共享。因为你存放的方式和别人存放数据的方式可能完全不一样,如果你需要用到别人的代码,就需要你去修改他人的代码。这样很浪费时间。而数据库就是解决数据存放问题的解决方案。

你可以把数据库简单理解为程序存放数据的地方。相关数据库知识在本文也不会说明。建议大家如果不了解数据库,先去了解下数据库的相关知识。

当然,我们知道数据库有其独立的数据库语言-SQL语句。有的人确实不会使用和操作数据库,在这里django使用models(模型)来降低数据库使用门槛。通过models,你可以完全没有任何数据库操作知识(当然还是推荐你去学习相关知识),就可以通过django的API来创建和使用相应的表、字段和键值。

同时,django的models功能十分强大。等下你就知道了。

模型与字段

模型是真实数据的简单明确的描述。它包含了储存的数据所必要的字段和行为。

让我们回顾一下,一个note可能有标题、正文和时间。所以我们至少需要3个字段:标题、正文和时间.

下面,我们在/note/models.py下编写我们的模型:

from django.db import models

# Create your models here.
class Note(models.Model):
    title = models.CharField(max_length=40)
    content = models.TextField()
    created_time = models.DateTimeField('date created')
    def __str__(self):
        return self.title

代码非常直白。每个模型被表示为 django.db.models.Model 类的子类。每个模型有一些类变量,它们都表示模型里的一个数据库字段。

每个字段都是 Field 类的实例 – 比如,字符字段被表示为 CharField ,文本被表示为TextField , 日期时间字段被表示为 DateTimeField 。这将告诉 Django 每个字段要处理的数据类型。

每个 Field 类实例变量的名字(例如 title 或 created_time )也是字段名,所以最好使用对机器友好的格式。你将会在 Python 代码里使用它们,而数据库会将它们作为列名。

我们已经创建了一个模型,下面让我们激活,并使用这个模型。

激活并使用模型

在激活模型之前,首先需要在settings.py检查你的app是否已经注册。注册方法在上篇文章已经提到。

然后,在虚拟环境下的控制台运行下面的命令:

python manage.py makemigrations note

这个命令是django检测模型文件的修改,并把修改后的对应记录下来,以准备进行迁移(migrate)

使用migrate命令来完成迁移:python manage.py migrate

这样,你完成了模型的激活。如果以后你需要修改你的模型,一定要注意有这么几个步骤:

  1. 编辑 models.py 文件,改变模型。
  2. 运行 python manage.py makemigrations 为模型的改变生成迁移文件。
  3. 运行 python manage.py migrate 来应用数据库迁移。

使用django自带管理页面管理数据

首先,我们需要创建一个管理员账号:

python manage.py createsuperuser

根据提示,输入用户名、邮箱和密码,便完成了管理员账号的创建。

然后,我们需要在管理页面中导入我们的note这个app.这个在/note/admin.py中设置。

from django.contrib import admin
from .models import Note

# Register your models here.
admin.site.register(Note)

然后,我们启动项目,进入localhost:8000/admin , 输入你所建立的用户名和密码,进入后台。

《Django入门(3)-models(模型)介绍》

我们可以看到note模型在后台管理中出现了。我们进去添加一个note。

《Django入门(3)-models(模型)介绍》

点save便可保存完成。之后返回到note管理页面,就可以看到我们添加了一篇note。

《Django入门(3)-models(模型)介绍》

这样我们便完成了一篇note的添加。

未完待续

下次,我们将讲解怎么把model产生的数据放到html上。这个其实非常简单!

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注