Django个人博客开发练手demo笔记

     阅读:61

目录

序言

一、环境搭建、项目结构

二、设计阶段

三、创建数据库模型

四、使用后台管理系统

五、创建视图类

六、网站成型

七、问题修复

八、完整项目效果

九、其他


序言

Django是一个的python开源Web应用框架,是一个遵循 MVC 设计模式的框架。MVC是Model、View、Controller三个单词的简写,分别代表模型、视图、控制器。

一、环境搭建、项目结构

环境搭建:略

项目结构:

二、设计阶段

数据库设计:有道云笔记

三、创建数据库模型

django的一切操作,视图、后台都是以Model为基础。根据表结构,构造出需要的model即可:尤其需要注意:外键、一对一、一对多等关系

此处以文章举例

blog/models.py(图片双击放大)

在cmd使用如下命令,进行数据库转移

python3 manage.py makemigrations

python3 manage.py migrate

转移之后,会在app/migrations包下生成数据迁移记录,可检查是否迁移成功

四、使用后台管理系统

admin后台管理可以让我们快速便捷管理数据。

此处需要注册表信息:

blog/admin.py

使用fieldsets可自定义编辑表单。 注册表信息之后:即可登录http://localhost:8000/admin/进行可视化操作

登录后如图所示:

五、创建视图类

前面已经讲了MVT中的模型和视图、本章内容为模板相关。

简单来说,可以把模板理解为HTML,再高阶一些就是VUE等框架。

在blog/views.py对要进行操作的mode进行实例化,然后将其渲染模板中

此处以博客首页为例:

# 首页 
def index(request): 
    allarticle = Article.objects.all().order_by('-id')[0:10] 
    # 常规ORM操作 
    context = { 'allarticle': allarticle, } 
    # 带参数渲染到模板中 
    return render(request, 'index.html', locals())

在HTML模板中:

<div>     
    <ul>     
        <h4>所有文章:</h4>         
        {% for article in allarticle  %}         
        <li>{{ article.title }}</li>         
        {% endfor %}     
    </ul> 
</div>

渲染成功后结果如下:

由前面的章节可以看出,如果我要将内容渲染到网页,需要模型、视图、模板共同作用。

此也对应了MVT的设计理念。

六、网站成型

前面都是单个举例,根据单例延伸即可

七、问题修复

博客在使用翻页功能中,遇到页面报错:RelatedObjectDoesNotExist at /show-6.html

首先定位到了报错点,如下,无非就是通过ORM查询:查询条件为:创建时间小于当前文章,且为同类型

next_blog = Article.objects.filter\ (created_time__lt=show.created_time,category=show.category_id).last()

其等价于为:

select * from article where created_time<"xxxx"" and category_id ="xx"

然后用navicat去数据库查询本条记录,发现报错文章的“category_id”为空。‘

解决办法嘛:将category在前端或者后端标记必填

八、完整项目效果

#首页

 #文章详情页

九、其他

第一次开发练手,还有很多不好的地方,理想是后面以前后端分离重新完善一下