使用 django-blog-zinnia 搭建个人博客

即网上搭建个人博客的方案很多,虽然应用诸如 WordPress ( PHP )、Hexo (
Node.js )
等好好高效地追加建筑平磨蹭功能齐全的过人性能个人博客,但是本文将尝试同种更加小众化的方案
—— 一缓缓基于 django-blog-zinnia ( Python ) 的私家博客应用。

django-blog-zinnia
虽然小巧,但是所有了个人博客应用之整套基础功能,且独具很高的拓展性,并且开箱即用。以下是官列有之一对表征:

  • 评论
  • 站点地图(用于搜索引擎优化)
  • 章归档视图(自动按时间归档博文,包括年、月、星期、日依次时间维度)
  • RSS 或者 Atom Feed
  • 分类和标签云
  • 全文检索
  • Markdown 语法标记

等等其他一些博客应用具有的百分之百基本功能。

而可参考它的合法文档 ( django-blog-zinnia
documentation
) 的
installation
部分开展初步的安,但本文为会见吃出详细的安装教程,并对准有关的细节进行进一步补充,对效果拓展更地拓展设置。

横流:本博客当作文时每一个手续都在实质上条件下测试了千篇一律全副,基本保证无问题。但是出于个体做时的疏忽或电脑环境之差距,也可能会见发出局部误造成你卡于有地方无法持续拓展下。如果是这样要于自家留言,我同您共同排查问题,如果发现凡是博客写作时之失实也好使我赶快再凑巧。

成立虚拟环境

坐当装置 django-blog-zinnia
的经过遭到会装多别样第三正在依包,因此强烈建议使用虚拟环境安装,以免把系统环境为瞎。

而你的 python 版本是 3.4 或另行强(建议下 3.4 以上版本,当然
django-blog-zinnia 本身是配合 python2.7
及以上版本的),且早已装了虚拟环境管理工具
virtualenv,如果没的话通过 pip install virtualenv
安装。打开命令执行,进入及公想建立虚拟环境的目录,通过命令
virtualenv zinnia_demo_env 创建一个叫作也 zinnia_demo_env
的虚拟环境,当然 zinnia_demo_env
这个目录名而得肆意指定。进入及创造的虚拟环境的 Scripts 目录下,输入
activate 命令激活虚拟环境,此时下令行前大抵矣一个 ( zinnia_demo_env )
说明已经激活,例如我之是:

(zinnia_demo_env) D:\Users\zmrenwu\Envs\zinnia_demo_env\Scripts>

通过 pip install django==1.9.6 安装 django,建议采用 1.9.6 版本,当然
>=1.9 的版本都是匹配的,但只顾脚下勿匹配 django1.10。

建立 django 工程

跻身你爱的目录(确保依然以虚拟环境中,如果无则依照上面的点子重复开启,且下的操作默认都在虚拟环境中运行,因此不要脱离),通过命令
python django-admin.py startproject zinnia_demo 创建一个 django
工程。这里 zinnia_demo
是种类名为,可以取任何你喜爱的名。此时你会意识差不多了一个叫做也 zinnia_demo
的目录,这样 django 工程就是起好了。进入到这个目录,会视出一个
manage.py 文件,尝试运行命令
python manage.py runserver,不报错的话,在浏览器输入
127.0.0.1:8000,看到如下字样说明 django 工程都好正确运行。

It worked!

Congratulations on your first Django-powered page.

Of course, you haven’t actually done any work yet. Next, start your
first app by running python manage.py startapp [app_label].

You’re seeing this message because you have DEBUG = True in your
Django settings file and you haven’t configured any URLs. Get to work!

按 Ctrl + c 退出服务器。

设置 zinnia 及其依赖

以虚拟环境中输入 pip install django-blog-zinnia 安装
django-blog-zinnia,必要的依赖其会自动帮咱装,但是一些进展依赖需要我们手动安装,包括:

pip install markdown 安装 markdown,以便要博客文章支持 markdown
格式的文件。

pip install pygments 安装 pygments,以便支持代码语法高亮。

设置 settings.py 文件

进入到 zinnia_demo/zinnia_demo
(当然你可能安装了其它类别名为,但自身相信您会找到),打开 settings.py
文件(用文本编辑器或 python IDE 打开,不要一直运行),在 INSTALL_APPS
列表里添加以下的 APP,这些 APP 都是 django-blog-zinnia 依赖运行的 APP :

zinnia_demo/zinnia_demo/settings.py

INSTALLED_APPS = [
    # 工程建立时默认添加的app
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # 项目添加的app
    'django.contrib.sites',
    'django_comments',
    'mptt',
    'tagging',
    'zinnia',
]

在 TEMPLATES 列表的如下位置在 zinnia.context_processors.version
,当然就无异步是可选的,其作用只是以博客页面的底层显示一个django-blog-zinnia
的版本号:

zinnia_demo/zinnia_demo/settings.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',

                # 添加这句
                'zinnia.context_processors.version',  # Optional
            ],
        },
    },
]

在 ALLOWED_HOSTS = [] 的下面添加 SITE_ID = 1

zinnia_demo/zinnia_demo/settings.py

ALLOWED_HOSTS = []
SITE_ID = 1

并修改语言和时区,获得重新友善的语言与时空显示,注意 + 号表示添加的实施,-
号表示去的实践:

zinnia_demo/zinnia_demo/settings.py

- LANGUAGE_CODE = 'en-us'
+ LANGUAGE_CODE = 'zh-hans'

- TIME_ZONE = 'UTC'
+ TIME_ZONE = 'Asia/Shanghai'

设置 urls.py 文件

开拓相同目录下的 urls.py 文件,做如下修改,注意 + 号表示添加的实行,-
号表示去的实行:

zinnia_demo/zinnia_demo/urls.py

- from django.conf.urls import url
+ from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    + url(r'^weblog/', include('zinnia.urls')),
    + url(r'^comments/', include('django_comments.urls')),
]

联合数据库并创建后台管理员账户

当 manage.py 文件所在目录下输入 python manage.py migrate
建立相应的数码库表结构。此时见面见到目录下大半了一个 db.sqlite
文件,这是储存博客数据的数据库文件,默认使用的 sqlite3。输入命令
python manage.py createsuperuser
创建后台管理员账户,命令行会提示您输入用户称、邮箱、密码。注意密码输入时莫见面发其他显示,只管输下去就推行。

打开开发服务器

重运行 python manage.py runserver 开启开发服务器,在浏览器输入
127.0.0.1:8000/weblog 将见到博客的首页面。输入 127.0.0.1:8000/admin
会进入后台登录页面,输入才创建的组织者账户用户称与密码便好登录到后台管理界面。在日志末尾点击增加按钮尝试在上加相同篇博客看看!再次进入
127.0.0.1:8000/weblog 就可以看到刚刊出的博客了。

图片 1

django-zinnia-blog homepage

至今基本的博客已经搭建了,接下是一对只是选功能进行,包括 markdown
语法支持,代码高亮,bootstrap 主题的安。

( OPTIONAL ) Markdown 语法支持

重复打开 settings.py 文件,在文书的结尾补充加:

zinnia_demo/zinnia_demo/settings.py

...
ZINNIA_MARKUP_LANGUAGE = 'markdown'
ZINNIA_MARKDOWN_EXTENSIONS = ['markdown.extensions.extra', 'markdown.extensions.codehilite']

bingo!!

ZINNIA_MARKUP_LANGUAGE 指明了采取 markdown
语法标记,ZINNIA_MARKDOWN_EXTENSIONS 做了少数独拓展,其中
markdown.extensions.codehilite
表示支持语法高亮,markdown.extensions.extra 包含的风味请参见 markdown
相关文档。

( OPTIONAL ) 安装 Bootstrap 主题

若是您不爱好原生的主题吧,django-blog-zinnia 为我们提供了一如既往套
bootstrap
主题,相对来说更加好看一点。虽然说其实话内置的主题感都已经过时了,因此我再为她装了同模拟新的主题,稍后会生介绍。

停顿服务器的运行,进入及虚拟环境(如果您就离了的口舌),首先输入命令
pip install django-app-namespace-template-loader 安装
django-app-namespace-template-loader,这是替换主题的一个必不可少组件。再输入
pip install zinnia-theme-bootstrap 安装主题 APP ,打开 settings.py
文件,在 INSTALLED_APPS 中登记主题 APP ,注意主题 zinnia_bootstrap
一定要是当 zinnia 之前:

zinnia_demo/zinnia_demo/settings.py

INSTALLED_APPS = [
    ...
    'zinnia_bootstrap',
    'zinnia',
]

更以 TEMPLATES 列表做如下修改:

zinnia_demo/zinnia_demo/settings.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        - 'APP_DIRS': True,
        + 'APP_DIRS': False,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'zinnia.context_processors.version',  # Optional
            ],

            # 添加下面这几行
            'loaders': [
               'app_namespace.Loader',
               'django.template.loaders.filesystem.Loader',
               'django.template.loaders.app_directories.Loader',
            ],
            # 添加上面几行
        },
    },
]

这再次开启服务器,进入主页 127.0.0.1:8000/weblog 就可以看到主题变成了
bootstrap 样式了。

( OPTIONAL ) 语法高亮支持

在意:这等同步要在装置完 bootstrap 主题后。

pygments 已经帮助自己做好了整整语法高亮的备,其规律就是是管 html
中之代码文本分成很多片,用当的 html 标签包裹,并且增长相应的 css
类,我们唯有需要引入一个对应的 css 样式文件即可。

为好起见,我们新建一个 APP 来存放在我之待引入的 css 样式文件,在
zinnia_demo/ 目录下(与 manage.py 同级)下输入
python manage.py startapp theme,这样我们不怕创办了一个叫做吧 theme 的
app,可以看来 zinnia_demo/ 多了一个 theme 的文本夹。

在 zinnia_demo/ 目录下(与 manage.py 同级)建立如下的目结构与文书:

zinnia_demo/templates/zinnia/skeleton.html,把及时其间的始末:skeleton
模板代码
,复制到 skeleton.html中,并且在 skeleton.html 的 <head>
标签里添加一行:

zinnia_demo/templates/zinnia/skeleton.html

<link rel="stylesheet" href="{% static "theme/css/github.css" %}" />

再在 zinnia_demo/ 下树立如下的目结构以及文件:

zinnia_demo/theme/static/theme/css/github.css,把这中间的情节:github.css
样式代码
,复制到 github.css 文件中。

开辟 settings.py 文件,做如下修改:

zinnia_demo/zinnia_demo/settings.py

TEMPLATES = [
    {
        ...
        # 修改成下面的样子,作用是指明模板文件所在目录,即上面我们写的skeleton.html
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        ...
    }
]

将 theme app 注册到 INSTALLED_APPS 列表中:

zinnia_demo/zinnia_demo/settings.py

INSTALLED_APPS = [
    ...
    'theme',
    'zinnia_bootstrap',
    'zinnia',
]

开拓开发服务器,进入相应页面就可以看到代码高亮效果了。记得事先填充一些代码到博客文章被。

自己的开展型

设想到自带的主题为丁小有点有几不顺心(因为自身本人更是喜爱简约一些底),所以自己替换了同一仿照新的主题,你得优先预览一下效能:追梦人物之私有博客,做一个相比。由于目前还尚无做成插件,因此而谢兴趣之话语可以
follow 我 GitHub
上的品种:ZinniaBlog
。首页的 readme.md
文件就于起详细的地方安装和服务器部署过程,可供参考。我会尝试着时时刻刻保障添加一些开展的功用进入(目前单是替换了平等拟主题模板)。如果你发想念补加新的职能可品味着参考官方文档自己长,或者吃自身留言,我恐怕会见采纳。

结束

PS:

于带的评介功能当有人过来你发表的博客文章后会发送一封 email
给您的后台管理员账户邮箱(创建后台管理员账户填写的)。不过用装好发送邮件的信箱,参考布局如下,在
settings.py 中:

zinnia_demo/zinnia_demo/settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.163.com' # 如果不是163邮箱请替换为邮箱服务商的smtp服务器地址
EMAIL_PORT = 465
EMAIL_HOST_USER = '你的邮箱账号'  # add your own accounts for local test
EMAIL_HOST_PASSWORD = '你的邮箱密码'
EMAIL_USE_SSL = True
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

但如果保您的信箱开启了
SMTP,如果没有底言语请参见邮箱服务商的有关设置开展开。

网站地图xml地图