Django模型
模型在Django中,是一个被存储在资料库中的物件,可以想像是一种表格(table)的感觉。以下用简单的部落格网站来说明模型。
建立一个新的应用:
python manage.py startapp blog
这时的Django /目录下会多出一个资料夹博客接着也要告诉Django中我们建立了这样的应用程式,编辑mysite的/ settings.py,在INSTALLED_APPS里面加入刚才创的博客:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles' ,
'blog',
]
2.建立一个部落格的模型
编辑博客/ models.py:
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
class Post(models.Model):
author = models.ForeignKey(User)
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(
default=timezone.now)
published_date = models.DateTimeField(
blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
定义一个物件后,里面有属性:作者,标题,文字,CREATED_DATE,published_date,还有方法:发布,__ str__就像是基本的部落格内容要有作者,标题,内文,建立日期,发表日期。以及「送出」的功能。
如同在资料库建立表格时,要定义每个栏位的资料型态。
author = models.ForeignKey(User)→Foreign Key
title = models.CharField(max_length = 200)→200以内的字元数
text = models.TextField ()→无上限的字元数
created_date = models.DateTimeField(default = timezone.now)→日期时间
published_date = models.DateTimeField(blank = True,null = True)→日期时间
更多其他资料的型态在官方文件都能找到。
3.将编辑完成后的模型加入资料库中:
python manage.py makemigrations
输出结果:
“blog”
迁移:blog \ migrations \ 0001_initial.py
- 创建模型Post
接着再输入:
python manage.py migrate
输出结果:
要执行的操作:
应用所有迁移:admin,auth,blog,contenttypes,sessions
运行迁移:
应用blog.0001_initial ... OK
Django管理员
如果要进行资料的新增,修改,删除的话,可以直接进入后台执行。
编辑博客/ admin.py:
从django.contrib导入admin
从.models导入Post
admin.site.register(POST)
2.运行Web服务器:
python manage.py runserver
3.打开浏览器:http : //127.0.0.1 :8000/admin/
输入建立资料库时的帐号密码就能登入后台,进入博客下面的文章,里面有很友善的UI介面可以直接做资料的新增,修改,删除。