Django博客系统开发02

模型Model

Model即MVC模式中的模型,主要是通过ORM与数据库对接,执行对数据库的一些操作。博客系统的所有的模型都将在hzblog/models.py中定义。下面定义我们的第一个Model——Post:

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

定义完成后,我们使用migrate命令在数据库中生成相应的表结构

python manage.py makemigrations hzblog
python manage.py migrate hzblog

第一步中,django将为我们创建model修改后需要更改的sql。第二步中将这些更改写入到数据库中。

下面我们在django shell中创建一篇文章

python manage.py shell
>>> from hzblog.models import Post
>>> Post.objects.all()
<QuerySet []>
>>> from django.contrib.auth.models import User
>>> User.objects.create(username='Henry')
<User: Henry>
>>> henry = User.objects.get(username='Henry')
>>> Post.objects.create(author = henry, title = 'Sample 01', text = 'Test')
<Post: Sample 01>
>>> Post.objects.all()
[<Post: Sample 01>]

同样的方法,创建其他Sample文章,现在我们就有了三篇文章

>>> Post.objects.filter(author=user)
[<Post: Sample 01>, <Post: Sample 02>, <Post: Sample 03>]

下面,我们筛选出其中的Sample 02这篇文章并发布

>>> post = Post.objects.get(id=2)
>>> post.publish()
>>> Post.objects.filter(published_date__isnull=False)
[<Post: Sample 02>]

这时候,我们就通过django shell用CLI的方式创建了三篇文章并发布了其中一篇。

后台管理Django Admin

Django框架提供了一个简单的后台管理界面Django Admin。我们先创建一个管理员账号admin:

python manage.py createsuperuser

创建完成后,我们就可以用这个账号登陆Django后台。

http://localhost:8080/admin

2

接下来,我们把我们创建的Post这个Model注册到Django Admin中:

修改hzblog/admin.py

from django.contrib import admin
from .models import Post

admin.site.register(Post)

下面,我们登陆到Django后台,现在已经可以看到我们刚才通过shell创建的几篇文章了。

3
Django后台界面
4
文章列表页
5
文章详情页

暂无评论

发表评论

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