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_APPLICATION
DATABASES
数据库配置,默认是db.sqlite3
AUTH_PASSWORD_VALIDATORS
密码认证
LANGUAGE_CODE
语言TIME_ZONE
时区STATIC_URL
静态文件配置地址
urls.py
- 项目路由配置文件
manage.py
- 项目管理文件
manage.py
是与项目进行交互的命令行工具集的入口
wsgi.py
python
服务器网关接口,项目与服务器通信的接口
__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 shell
from blog.model import Article
Article.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"> |
这样,最新文章获取也完成了。
至此,完成了简易博客的全部功能。