Django搭建博客实践

最终效果:
Django搭建博客实践

摩拳擦掌,开始制作过程:
新建项目和app:

新建项目django-admin startproject first
添加apppython3 manage.py startapp blog

项目目录下settings.py添加应用:

INSTALLED_APPS = [
    ....
    'blog.apps.BlogConfig',
]

建立模型:models.py文件:
Django搭建博客实践

说明:

在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错:

TypeError: __init__() missing 1 required positional argument: 'on_delete'
参数说明:
on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五个可选择的值
CASCADE:此值设置,是级联删除。
PROTECT:此值设置,是会报完整性错误。
SET_NULL:此值设置,会把外键设置为null,前提是允许为null。
SET_DEFAULT:此值设置,会把设置为外键的默认值。
SET():此值设置,会调用外面的值,可以是一个函数。
一般情况下使用CASCADE就可以了。

迁移数据库,一顿操作猛如虎:

python3 manage.py makemigrationspython3 manage.py migrate

Django搭建博客实践

项目的urls.py配置:

urlpatterns = [
    ...
    path('blog/', include('blog.urls')),
]

应用的urls.py配置:

from django.urls import path 
from . import views
app_name = 'blog'
urlpatterns = [
    path('', views.index, name='index'),
]

使用模板继承,妈妈再也不会担心我敲的代码冗余了。
base.html:
Django搭建博客实践
index.html:
Django搭建博客实践
猛敲python3 manage.py runserver,访问一下http://127.0.0.1:8000/blog/,看能不能转:
Django搭建博客实践

简单搞一下管理后代,方便以后发博文。
项目下admin.py文件就是你啦。
Django搭建博客实践
访问:http://127.0.0.1:8000/admin/,创建超级用户python3 manage.py createsuperuser按提示操作,输入账号进入后台。
Django搭建博客实践

Django搭建博客实践

就这样子,东一榔头西一棒。来搞博文详情页吧。
设置blog/urls.py每篇博文通过传递的博客文章唯一属性id来识别。:

urlpatterns = [
   ...
   path('post/<int:post_id>/', views.detail, name='detail'),
]

views.py文件,获取传递过来的post_id,通过模型读取博客文章,如果不存在返回404错误:
Django搭建博客实践
模板detail.html文件:
Django搭建博客实践
代码基本撸玩了,进页面看一下吧。
Django搭建博客实践
简直完美。骨架弄好了,咱来添砖加瓦吧。让博客详情页支持传说中的Markdown,给机器装一下markdown,行云流水的敲下pip3 install markdown。然后继续在IDE中撸代码。views.py撒上markdown花椒后味道会不会更香一点?
Django搭建博客实践
当然这里光撒上花椒后味道还不能散发出来,被Django的安全机制挡住了。咱开启一下,detail.html里的

{{ post.body | safe }}

加上safe就是不一样。然后引入css样式文件就好啦,这些静态的文件上线的时候都要集中收集好,统一部署。所以base.html文件第一行要加上

{% load static %}

在head标签里再加上

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

参照Django手册引入静态文件的方式做就可以咯。效果真是杠杠的!
Django搭建博客实践
这样基本的博客也就搭建好了,博文详情页的上一篇下一篇这个功能稍后再弄。先看一下大体效果:
Django搭建博客实践

上一篇:【信息安全_其他】JAVA(Android),PHP,IOS三平台RSA加解密互通算法


下一篇:【Hybrid_APICloud_其他】vue.js与dot模板