Django 项目搭建及分页功能实现
利用
Django框架实现一个简易Web Blog
Django 安装
- 安装
1 | pip3 install django |
确认安装成功:
1 | django-admin |
出现提示信息,则安装成功。
或
1 | python3 -m django --version |
输出正确版本信息,则证明安装成功。
项目搭建
Django 项目
- 初始化项目
1 | django-admin startproject django_introduction |
- 运行项目
1 | python3 manage.py runserver |
可以通过终端提示 http://127.0.0.1:8000/ 进行访问:

项目目录
settings.py- 项目配置文件
BASE_DIR项目根目录SECRET_KEY安全码,项目自动生成DEBUG调试,true和false可选ALLOWED_HOSTS配置允许的地址INSTALLED_APPS已安装应用,自己创建的应用需要在这里配置MIDDLEWARE中间件即Django自带的工具集ROOT_URLCONF指向RUL的路径TEMPLATES模板配置WSGI_APPLICATIONDATABASES数据库配置,默认是db.sqlite3AUTH_PASSWORD_VALIDATORS密码认证
LANGUAGE_CODE语言TIME_ZONE时区STATIC_URL静态文件配置地址
urls.py- 项目路由配置文件
manage.py- 项目管理文件
manage.py是与项目进行交互的命令行工具集的入口
wsgi.pypython服务器网关接口,项目与服务器通信的接口
__init__.py声明模块的文件,默认内容为空
Django 应用
Djanog项目与应用是一对多的关系,一个Django应用可以包含一组配置和若干个Django应用,Django应用是一个可重用的Python软件包。
- 创建应用
1 | python3 manage.py startapp blog |
添加应用名到 setting.py 中的 INSTALLED_APPS
1 | 'blog.apps.BlogConfig' |

参考应用目录 blog => apps.py => BlogConfig
应用目录
views.py- 视图处理
models.py- 定义应用模型
admin.py- 定义
admin模块管理对象
- 定义
apps.py- 声明应用
tests.py- 编写应用测试用例
urls.py- (自行创建)管理应用路由
对视图和路由的理解实例
编写视图函数 views.py
1 | from django.shortcuts import render |
编写路由配置
- 配置应用层次路由
在 blog 应用下创建 urls.py 文件:
1 | from django.urls import path, include |
- 配置项目层次路由
在项目的 urls.py 文件中实现:
1 | from django.contrib import admin |
这时,启动项目服务器,
1 | python3 manage.py runserver |
就可以在路由http://127.0.0.1:8000/blog/hello_world 访问。
模型(Model)
在
Django中我们以创建类的形式来创建数据表,对数据库的操作,就是对类和类的对象的操作,即ORM
Model 定义
在 blog 应用的 models.py 中定义:
1 | from django.db import models |
Model 迁移
通过模型的迁移将模型定义保存到数据库
- 创建模型变更的迁移文件
1 | python3 manage.py makemigrations |

- 执行迁移文件同步变更到数据库
1 | python3 manage.py migrate |

Django shell
使用命令可以进入 Django shell 环境
Python shell用于交互式Python编程,Django shell也类似,它继承Django项目环境。
临时性操作使用 Djaogo shell 更加方便,它方便开发、调试、 Debug
1 | python3 manage.py shell |
- 基本使用
python manage.py shellfrom blog.model import ArticleArticle.object.all()
Admin 模块
Django的后台管理工具,可以读取定义的模型元数据,提供强大的管理使用页面。
管理页面的一般功能:认证用户、显示管理模型、校验输入等。由于管理页面是基础设施中的重要部分,功能又太过于统一,创建太过繁琐,所以 Django 提供了一个强大的 Admin 模块。
- 创建创建管理员用户
1 | pthon3 manage.py createsuperuser |
Username: akashi(自定义)Email: (选填)Password: akashiadmin123
- 登录页面进行管理
启动服务器(python3 manage.py runserver),可以在http://127.0.0.1:8000/admin/登录进行访问。
- 将模型注册到
admin
在 blog/admin.py 中:
1 | from django.contrib import admin |
- 文章列表显示标题
在 models.py 定义一个函数,添加返回值:
1 | def __str__(self): |
重新启动服务: python3 manage.py runserver,便可以返回文章的标题。
Django 视图和模板
Template
模板系统的表现形式是文本,用于编写页面表现内容,做到了页面表现形式和表现内容分离。
定义了特有的标签占位符:
- 变量
1 | {{变量}} |
for循环
1 | {% for x in list %} |
if-else循环
1 | {% if %} |
使用模板系统渲染博客页面
- 实现博客首页
新建页面存放路径:blog => templates => blog => index.html
1 |
|
在 views.py 中编辑返回方法:
1 | def get_index_page(request): |
配置路由,在应用路由 urls.py 中添加:
1 | path('index', blog.views.get_index_page), |
之后便可以在 http://127.0.0.1:8000/blog/index 进行访问。
- 博客详情页
依照首页的步骤,先规划页面路径:blog => templates => blog => detail.html
1 |
|
方法定义:
1 | def get_detail_page(request): |
路由配置:
1 | path('detail', blog.views.get_detail_page) |
实现文章详情页页面跳转
- 文章跳转
重新规划 URL,传入 article_id 作为参数:
1 | path('detail/<int:article_id>', blog.views.get_detail_page) |
同时,在视图层以形参的方式传入:
1 | def get_detail_page(request, article_id): |
这样,就可以指定 id 进行文章跳转。
- 实现超链接跳转
index.html:
1 | <div class="body-main"> |
实现文章上下篇跳转
首先,在 detail.html 中添加翻页标签:
1 | <div class="container"> |
然后,在 views.py 中添加需要的变量,并添加逻辑:
1 | def get_detail_page(request, article_id): |
这样,就实现了上一页,下一页的跳转。
实现分页功能
首页,也是在 index.html 添加分页标签:
1 | <div class="container body-footer clo-md-4 col-md-offset-3"> |
然后,设计 URL 并获取分页的值:
设计 URL 如下: http://127.0.0.1:8000/blog/index?page=9
获取:
1 | def get_index_page(request): |
- 使用
Django分页组件
导入:
1 | # 引入分页组件 |
获取当前页、上一页、下一页并实现逻辑:
1 | def get_index_page(request): |
同时,修改分页链接:
1 | <div class="container body-footer clo-md-4 col-md-offset-3"> |
这样,就完成了分页功能。
实现最近文章列表
通过 order_by 查询并切片获取最新文章列表返回:
1 | def get_index_page(request): |
修改前端链接:
1 | <div class="col-md-3" role="complementary"> |
这样,最新文章获取也完成了。
至此,完成了简易博客的全部功能。