Django搭建博客实践

简介:

最终效果:
一揽全局,真是骚

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

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

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

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

建立模型:models.py文件:
models.py

说明:

在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

迁移数据库

项目的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:
base.html
index.html:
index.html
猛敲python3 manage.py runserver,访问一下http://127.0.0.1:8000/blog/,看能不能转:
你是我的理想型

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

文章管理界面

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

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

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

{{ post.body | safe }}

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

{% load static %}

在head标签里再加上

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

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

相关文章
|
2月前
|
存储 缓存 NoSQL
深入理解Django与Redis的集成实践
深入理解Django与Redis的集成实践
60 0
|
4月前
|
存储 监控 数据库
Django 后端架构开发:高效日志规范与实践
Django 后端架构开发:高效日志规范与实践
74 1
|
7月前
|
Python API 网络架构
Django实践-10RESTful架构和DRF入门
Django实践-10RESTful架构和DRF入门
Django实践-10RESTful架构和DRF入门
|
7月前
|
中间件 程序员 开发工具
Django实践-08中间件的应用
Django实践-08中间件的应用
Django实践-08中间件的应用
|
4月前
|
负载均衡 应用服务中间件 网络安全
Django后端架构开发:Nginx服务优化实践
Django后端架构开发:Nginx服务优化实践
61 2
|
4月前
|
JSON API 数据安全/隐私保护
Django 后端架构开发:JWT 项目实践与Drf版本控制
Django 后端架构开发:JWT 项目实践与Drf版本控制
78 0
|
5月前
|
安全 API 网络安全
Django RESTful API安全实践
【7月更文挑战第19天】构建安全的Django RESTful API需要综合考虑多个方面,包括身份验证与授权、数据验证与清洗、安全的HTTPS连接、限制请求频率以及审计与日志记录等。通过实施这些安全实践,可以有效地保护API服务免受各种安全威胁的侵害,确保用户数据的安全性和服务的可用性。开发者在开发RESTful API时,应始终将安全性放在首位,确保API服务的安全可靠。
|
6月前
|
存储 监控 调度
Django中的定时任务与后台任务队列的实践
【6月更文挑战第10天】在Django中实现定时任务和后台任务队列,可以使用Celery+Beat进行定时任务,Django Q处理后台任务。Celery配置包括设置Broker和Result Backend,创建Celery实例及任务。Django Q则涉及安装、配置ORM和创建任务。通过`async_task`将任务放入队列。注意性能、资源、安全和错误处理。使用时需考虑认证、输入验证、日志监控、部署策略和测试质量保障。
67 3
Django中的定时任务与后台任务队列的实践
|
6月前
|
安全 API 数据安全/隐私保护
Django REST framework安全实践:轻松实现认证、权限与限流功能
Django REST framework安全实践:轻松实现认证、权限与限流功能
|
6月前
|
JSON 搜索推荐 数据库
Django REST framework数据展示技巧:分页、过滤与搜索的实用配置与实践
Django REST framework数据展示技巧:分页、过滤与搜索的实用配置与实践