潭州课堂25班:Ph201805201 django 项目 第二十一课 文章主页 新闻列表页面功能 (课堂笔记)
新闻列表页功能
1.分析
业务处理流程:
-
判断前端传的标签分类id是否为空,是否为整数、是否超过范围
-
判断前端传的当前文章页数是否为空,是否为整数、是否超过范围
请求方法:GET
url定义:/news/
请求参数:url路径参数
参数 | 类型 | 前端是否必须传 | 描述 |
---|---|---|---|
tag_id | 整数 | 是 | 标签分类id |
page | 整数 | 是 | 当前文章页数 |
向前端返回的数据格式为json格式,返回实例如下:
{
"data": {
"total_pages": 61,
"news": [
{
"digest": "在python用import或者from...import或者from...import...as...来导入相应的模块,作用和使用方法与C语言的include头文件类似。其实就是引入...",
"title": "import方法引入模块详解",
"author": "python",
"image_url": "/media/jichujiaochen.jpeg",
"tag_name": "Python基础",
"update_time": "2018年12月17日 14:48"
},
{
"digest": "如果你原来是一个php程序员,你对于php函数非常了解(PS:站长原来就是一个php程序员),但是现在由于工作或者其他原因要学习python,但是p...",
"title": "给曾经是phper的程序员推荐个学习网站",
"author": "python",
"image_url": "/media/jichujiaochen.jpeg",
"tag_name": "Python基础",
"update_time": "2018年12月17日 14:48"
}
]
},
"errno": "0",
"errmsg": ""
}
后端代码实现
在项目根目录下创建一个media文件夹,用于存放新闻图片以及用户上传的文
# 在settings.py文件中添加如下配置:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
注解:当路径 是 media 开头的,就会在 media 文件夹中查找
# 在全局urls.py文件中添加如下配置:
from django.conf import settings
from django.conf.urls.static import static
from django.urls import path, include
urlpatterns = [
...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
在 nwes的视图中创建个类视图:
# 1,创建类
# 2,校验参数
# 3,查询数据:从数据库中查询新闻例表数据
# 4,序列化数据,
# 5,返回数据到前台
通过命令导入数据到 mysql 数据库:
pychrm 连接数据库
要下载驱动 点DOWNLOAD MISSING DRIVER FILES
要查询的参数
在news目录下constants.py中定义如下常量:
# 每页新闻数
PER_PAGE_NEWS_COUNT = 5