基于Django构建Blog(12)-其它

到目前为止,这个blog的基本功能就已经全部实现了。系统用例中的那个“备份”和“还原”其实是想做在admin页面中,用户登入admin后,点击按钮,就可完成内容的备份和还原,同时还可以将备份的数据保存到指定的云端服务中。我们讨论的重点不是内容的备份/还原,所以在系统用例中只做了简单描述,其相关实现可以参看xlog工程源码。

另外,还有一个问题就是:在编辑文章的时候如果需要插入图片或文档该怎么办?

对于这个问题,可以使用第三方的云存储服务(例如:阿里云的OSS),先把文件保存到这些平台上,然后再在文章中引用链接就行了。

如果不想使用第三方服务,直接把文件上传到blog所在的服务器也是可以的。不过要借助额外的App来实现,做法如下(注意:由于pillow所依赖的库在OSX下安装比较麻烦,为节省时间,下面的操作都在CentOS7_x86_64中完成):

安装Python开发版

yum -y install python-devel

安装App及依赖库

django-adminfiles

pip install django-adminfiles==1.0.1

sorl-thumbnail

pip install sorl-thumbnail==12.2

pillow

pip install pillow==2.8.1

依赖库

yum -y install libtiff-devel libjpeg-devel libzip-devel freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel

启用App

在xblog/settings.py中添加App:

添加URL

在xblog/urls.py中添加:

使用FilePickerAdmin

apps/blog/admin.py代码修改为:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from django.contrib import admin
from models import Article, Tag, Category
from adminfiles.admin import FilePickerAdmin

admin.site.register(Tag)
admin.site.register(Category)
class PostAdmin(FilePickerAdmin):
    adminfiles_fields = ('text',)

admin.site.register(Article, PostAdmin)

配置存储目录

在xblog/settings.py中添加:

1
2
MEDIA_URL = '/media/'
MEDIA_ROOT = '/data/media/'

在xblog/urls.py中添加:
这样配置以后,上传的文件将被保存在/data/media目录中。

为新启用的App创建数据表

django-adminfilessorl-thumbnail的Models映射成数据表:

python manage.py migrate

使用

若上述步骤均顺利完成的话,admin中的文章编辑界面就会变成这个样子:
假设上传了一张名为"test.png"的图片,它在服务器上的存储位置将是:
"/data/media/adminfiles/test.png"。


Prev-基于Django构建Blog(11)-URL
Next-基于Django构建Blog(13)-部署