创建应用程序
当前,假设打开的终端中还运行着runserver,请再打开一个终端窗口,并切换到manage.py(cd learning_log)
所在的目录,激活该虚拟环境,再执行命令startapp:
learning_log$ ll_env\Scripts\activate
(ll_env)learning_log$ python manage.py startapp learning_logs
定义模型
下面的命令表示用户将要存储的主题的模型:
from 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
⚪ 属性text是一个CharField(由字符后文本组成的数据),在定义CharField属性时,必须告诉Django该在数据库中预留多少空间,在这里我们设置了max_length为200
激活模型
打开settings.py(在目录learning_log/learning_log中),请将INSTALLED_APPS修改成下面这样,将前面的应用程序添加到这个元组中:
--snip--
INSTALLED_APPS = (
--snip--
'django.contrib.staticfiles',
# 我的应用程序
'learning_logs',
)
--snip--
接下来,需要让Django修改数据库,使其能够存储与模型Topic相关的信息,执行以下命令:
(ll_env)learning_log$ python manage.py makemigrations learning_logs
Migrations for 'learning_logs':
0001_initial.py:
-Create model Topic
输出表明Django创建了一个名为0001_initial.py的迁移文件,这个文件在数据库中为模型Topic创建了一个表。然后我们来应用这种迁移,让Django替我们修改数据库:
(ll_env)learning_log$ python manage.py migrate
每当需要修改“学习笔记”管理数据时,都采取以下步骤:修改model.py → 对learning_logs调用makemigrations → 让Django迁移项目
Django管理网站
1. 创建超级用户
执行以下命令:
(ll_env)learning_log$ python manage.py createsuperuser
Username (leave blank to use 'ehmatthes'):(#用户输入)
Email address:(#可不输,直接回车)
Password:(#用户输入)
Password (again):
Superuser created successfully.
2. 向管理网站注册模型
打开admin.py(models.py所在目录),执行以下命令:
from django.contrib import admin
# 在这里注册你的模型
from learning_logs.models import Topic
admin.site.register(Topic)
3. 添加主题
访问http://localhost:8000/admin/,并输入你刚创建的超级用户和密码,单击Add,你将看到一个用于添加新主题的表单,在第一个方框中输入Chess,再单击Save,这将返回到主题管理页面,其中包括刚刚创建的主题;如有需要,可根据自身情况重复以上步骤进行主题添加。
定义模型Entry
下面是模型Entry的代码:
# from django.db import models
# class Topic(models.Model):
# --snip--
class Entry(models.Model):
"""学到的有关某个主题的具体知识"""
topic = models.ForeignKey(Topic,on_delete=models.CASCADE)
text = models.TextField()
date_added = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name_plural = 'entries'
def __str__(self):
"""返回模型的字符串表示"""
return self.text[:50] + "..."
第一个属性topic是一个ForeignKey实例,这些代码将每个条目关联到特定的主题,每个主题创建时都给它分配了一个键(或ID);接下来的属性text,他是一个TextField实例,这种字段不需要长度限制;属性date_added让我们能够按创建顺序呈现条目,并在每个条目旁边放置时间戳。
Meta存储用于管理模型的额外信息,在这里,它让我们能够设置一个特殊属性,让Django在需要时使用Entries来表示多个条目。
迁移模型Entry
由于我们添加了一个新模型,因此需要再次迁移数据库,你将慢慢的了解在这个过程:修改model.py → 执行命令python manage.py makemigrations app_name → 再执行命令python manage.py migrate
下面来迁移数据库并查看输出:
(ll_env)learning_log$ python manage.py makemigrations learning_logs
Migrations for 'learning_logs':
0002_entry.py:
-Create model Entry
(ll_env)learning_log$ python manage.py migrate
Operations to perform:
--snip--
Applying learning_logs.0002_entry... OK
生成了一个新的迁移文件------0002_entry.py,它告诉我们Django如何修改数据库,使其能够存储与模型相关的信息。
向管理网站注册Entry
打开admin.py(models.py所在目录),执行以下命令:
# from django.contrib import admin
from learning_logs.models import Topic ,Entry
# admin.site.register(Topic)
admin.site.register(Entry)
返回到http://localhost:8000/admin/,你将看到learning_logs下列出了Entries,单击Entries的Add链接,或者单击Entries再选择Add entry,你将看到一个下拉列表,让你能够选择要为哪个主题创建条目,还有一个用于输入条目的文本框,从下拉列表中选择Chess,并添加一个你自定的条目。
讲到这里今天的东东暂时就告一段落了噢,希望你一步一步跟着来,我敢保证你一定有收获,下次我将带你设置整个项目的主页,敬请期待嗷…
感谢阅读💜💜💜💜💜💜💜💜💜💜💜💜💜💜💜💜💜💜💜💜💜💜