在安装好Django框架的前提下,创建应用程序,一个Django项目是由一系列的应用程序组成的。
在终端窗口里运行的runserver,再打开一个终端窗口,切换到manage.py所在的目录,激活该虚拟环境,执行starapp APPname ,这个让Django创建应用程序的所需的基础设施。
在这里创建一个learning_logs的应用程序,输入“ls learning_logs/”,看到有以下文件,admin.py apps.py models.py tests.py views.py/
1.定义模型:
模型告知Django如何处理应用程序中存储的数据,可以这样想,它就是个类。
在文件夹里打开models.py,编写一个用户储存主题的模型:
#-*-coding:utf-8-*-
from django.db import models
# Create your models here.
class Topic(models.Model):
#用户学习的模型
text=models.CharField(max_length=200)
date_added=models.DateTimeField(auto_now_add=True)
def __str__(self): #返回模型的字符串表示
return self.text
现在模型建立好了,就要激活模型,打开settings.py,在INSTALLED_APPS=里进行修改:加上自己添加的应用程序。
-----------
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'learning_logs', #我的应用程序
]
----------
修改数据库,让它能够存储模型Topic相关的信息,在终端窗口里输入修改数据库的命令
makemigrations appname,就可以修改数据库,这里生成0001_initial.py的迁移文件,将在数据库为topic创建一个表;
迁移项目,输入migrate,这里需要注意的是applying learning_logs.0001_initial....是不是OK,这里表示迁移正常
只要修改项目的数据是,都是三部曲:1.修改models.py 2.对应用程序调用makemigrations;3.让Django迁移项目
2.Django管理网站
Django提供的(admin site)能轻松处理模型,这里为项目奖励管理网站,并使用它为模型添加一些主题
先创建管理员,也就是超级用户,拥有所有的权限,
像上面一样输入就可以创建了管理员。
再向管理网站注册模型,我们自己创建的模型是需要手动进注册,打开admin.py,注册模型:
from django.contrib import admin
#-*-coding:utf-8-*-
# Register your models here.
from learning_logs.models import Topic
admin.site.register(Topic)
现在,在浏览器里输入http://127.0.0.1:8000/admin回车,输入刚刚创建的管理员号码与密码,
添加主题,单击浏览器界面里的Topics进入主题网页,单击add,输入创建的主题,单击save,返回主题管理界面。
新定义一个entry模型,要记录学到的多个知识,就要为用户定义一个条目定义模型, 每个条目都与特定的主题相关联。
在models.py编写代码:
#-*-coding:utf-8-*-
from django.db import models
# Create your models here.
class Topic(models.Model):
#用户学习的模型
text=models.CharField(max_length=200)
date_added=models.DateTimeField(auto_now_add=True)
def __str__(self): #返回模型的字符串表示
return self.text
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]+"..."
在entry模型里,topic属性是一个外键,外键是数据库术语,它可以引用数据库的另一条记录,关联起来。嵌入一个meta类,存储用于管理模型的额外信息。
就像上面说的,修改了模型,就要进行三部曲。
注册entry模型:
from django.contrib import admin
#-*-coding:utf-8-*-
# Register your models here.
from learning_logs.models import Topic,Entry
admin.site.register(Topic)
admin.site.register(Entry)
打开浏览器,输入,看到界面如下:
单击Entries的add,看到有下拉列表,可以选择哪个主题,然后添加文本框信息 。这里创立2个chess和1个rock climbing。
可以通过交互式终端用编程的方式查看数据,------Django shell。
方法Topic.objects.all()可以获取模型Topic的所有实例,返回一个查询表。也可以打印主题的ID属性和字符串表示。
每次修改模型后,都要重启shell,退出shell,win系统是ctr+z.再按回车键。