第十八章 Django入门(二)
创建应用程序
django项目由一系列应用程序组成,他们协同工作,让项目称谓一个整体。首先我们执行命令python manage.py startapp learning_logs
。
定义模型
打开刚刚我们创建的文件夹,并修改models.py:
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
我们为模型创建了一个名为Topic的类,他继承了Model——django中一个定义模型基本功能的类。Topic类只有两个属性:text
和date_added
。 text
是一个CharField——由字符或文本组成的数据,可存储少量文本。传入参数**max_length**
为文本最大长度。 date_added
是一个DateField——记录日期和时间的数据。传入的实参auto_add_now=True
告诉django每当用户新建主题时,将这个属性自动设置为当前日期和时间。
激活模型
打开learning_log中的setting.py并添加
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'learning_logs', #<-here
]
这是一个元组,包含了django项目中的所有应用程序。接着执行python manage.py makemigrations learning_logs
让django确定如何修改数据库。最后应用迁移,执行python manage.py migrate
。
Django管理网站
1.创建超级用户,执行命令python manage.py createsuperuser
。
2.向管理网站注册模型,打开 learning_logs下的admin.py,并修改为:
from django.contrib import admin
from learning_logs.models import Topic
admin.site.register(Topic)
这写代码导入了我们要注册的模型Topic,接着使用admin.site.register(Topic)
让django通过管理网站管理我们的模型。
接着运行服务器,访问http://127.0.0.1:8000/admin
并使用着急用户帐号密码登录。
3.添加主题,点击Topic之后进入主题网页,此时可以通过点击add进行主题的添加,添加完成之后点击save进行保存。
定义模型Entry
learning_logs\models.py
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
class Entry(models.Model):
topic = models.ForeignKey(Topic)
text = models.TextField()
date_added = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name_plural = 'entries'
def __str__(self):
return self.text[:50] + "..."
ForeignKey
是数据库的外键,引用数据库中的另一个记录。Entry类中的Meta类用于存储管理模型的额外信息,这里设置了一个特殊属性,让django在需要时使用 Entries 来表示多个条目。
迁移模型Entry
由于我们添加了一个新模型,因此需要再次迁移数据库。执行命令python manage.py makemigrations learning_logs
以及python manage.py migrate
.
向管理网站注册Entry
修改如下文件
learning_logs\admin.py
from django.contrib import admin
from learning_logs.models import Topic, Entry
admin.site.register(Topic)
admin.site.register(Entry)
返回管理网站可以发现多了一个板块
接着点击新板块的add添加以下主题和讨论,并点击保存给我们之后测试使用。
国际象棋:The opening is the first part of the game, roughly the first ten moves or so. In the opening, it’s agood idea to do three things— bring out your bishops and knights, try to control the center of theboard, and castle your king.
攀岩:One of the most important concepts in climbing is to keep your weight on your feet asmuch as possible. There’s a myth that climbers can hang all day on their arms. In reality, goodclimbers have practiced specific ways of keeping their weight over their feet whenever possible
django shell
在输入以上数据之后,可以通过交互式终端会话访问这些数据,在测试项目和排除故障的时候会用上。执行命令python manage.py shell
可以打开shell会话。