头图

教程总体简介:项目概述 项目背景 项目的功能构架 项目的技术架构 CMS 什么是CMS CMS需求分析与工程搭建 静态门户工程搭建 SSI服务端包含技术 页面预览开发 4 添加“页面预览”链接 页面发布 需求分析 技术方案 测试 环境搭建 数据字典 服务端 前端 数据模型 页面原型 前端页面 上传图片开发 前端开发 图片查询 静态页面测试 CMS页面预览测试 CMS添加页面接口 搜索服务 搭建ES环境 后端工程搭建 导入CMS数据库 MongoEngine入门 在Django中使用MongoDB 定义文档 Logstash创建索引 创建搜索应用 定义ESClient 搜索前端技术需求 了解SEO 服务端渲染和客户端渲染 Nuxt.js入门 创建Nuxt工程 页面布局 路由 获取数据 搜索页面 查询全部 分页查询 按分类搜索 按难度等级搜索 集成测试 在线学习与媒资管理 在线学习需求分析 需求描述 视频点播解决方案 视频编码 FFmpeg的基本使用 生成m3u8/ts文件 播放器 搭建学习中心前端 媒资管理 开发环境 上传文件 断点续传解决方案 文件分块与合并 媒资服务端编写 视频处理 发送视频处理消息 我的媒资 选择视频 保存视频信息 Api接口 学习页面获取视频播放地址 在线学习接口 登录注册与认证授权 增加数据 修改数据 删除数据 查询数据 Q对象 其他 查询集 QuerySet 页面管理后端开发 接口说明 接口开发规范 JWT Django REST framework JWT 用户登录前端 前端显示当前用户 用户退出 前端集成认证授权 用户注册后端 订单与选课 分布式事务 问题描述 CAP理论 解决方案 自动添加选课方案 Celery Beat定时任务 订单服务定时发送消息 查询前N条任务 乐观锁取任务 RabbitMQ配置 学习服务添加选课 订单服务结束任务 传智云课堂 封装异常处理 封装JSON返回值 站点列表和模板列表接口 新增页面 页面查询接口定义 自定义条件查询 3 测试接口 页面详情 修改页面 删除页面 CMS前端工程创建 导入系统管理前端工程 单页面应用介绍 CMS前端页面查询开发 创建页面 Table组件测试 页面内容完善 跨域问题解决 进入页面立即查询 前后端请求响应流程小结 新增页面前端开发 页面处理流程 页面静态化及预览发布 页面静态化需求 模板管理 模板管理业务流程 模板制作 GridFS研究 模板存储

完整笔记资料代码:https://gitee.com/yinuo112/Backend/tree/master/Python/嘿马云...

感兴趣的小伙伴可以自取哦~


全套教程部分目录:


部分文件图片:

CMS页面管理需求

学习目标

  • 了解CMS系统中对页面管理的流程
  • 了解本项目CMS实现功能

1 页面管理流程

在CMS系统中,对页面管理的流程是怎样的呢?

1、创建站点:

​ 一个网站有很多子站点,比如:传智云课堂有主门户、学习中心、搜索等子站点。某个具体的页面是归属于具体的站点,所以要管理页面,先要管理页面所属的站点。

2、创建模板:

​ 页面如何创建呢?比如电商网站的商品详情页面,每个页面的内容布局、版式是相同的,不同的只是内容,这个页面的布局、版式就是页面模板,模板+数据就组成一个完整的页面。要创建一个页面文件,需要先定义此页面的模板,然后拿到页面的数据;最终将页面数据与模板结合(渲染)就拼装成一个完整的页面。

3、创建页面:

​ 创建页面是指填写页面的基本信息,如:页面的名称、页面的url地址等。

4、页面预览:

​ 页面预览是页面发布前的一项工作,页面预览使用静态化技术根据页面模板和数据生成页面内容,并通过浏览器预览页面。页面发布前进行页面预览的目是为了保证页面发布后的正确性。

5、页面发布:

​ 将页面发送到页面所在站点的服务器,页面发布成功就可以通过浏览器来访问了。

2 本项目CMS实现功能

1、页面管理

管理员在后台添加、修改、删除页面信息

2、页面预览

管理员通过页面预览功能预览页面发布后的效果。

3、页面发布

管理员通过页面发布功能将页面发布到远程门户服务器。

页面发布成功,用户即可在浏览器浏览到最新发布的页面,整个页面添加、发布的过程由于软件自动执行,无需人工登录服务器操作。

3 小结

  • 页面管理流程

    • 创建站点
    • 创建模板
    • 创建页面
    • 页面预览
    • 页面发布
  • 本项目CMS实现功能

    • 页面管理
    • 页面预览
    • 页面发布

后端工程搭建

学习目标

  • 创建后端工程项目
  • 创建CMS应用
  • 创建UCenter应用
  • 同步数据库

1 创建工程

创建虚拟环境:

mkvirtualenv cz_study -p python3 # 使用 python3.6

安装Django相关依赖包

pip install Django==1.11 djangorestframework==3.9.4 django-filter==2.1.0 Markdown==3.1.1 coreapi==2.3.3

安装MySQL客户端

pip install mysqlclient==1.4.2.post1

创建项目

django-admin startproject cz_study

2 配置运行

使用pycharm打开cz_study项目,并配置解释器(使用我们新创建的cz_study虚拟环境)

1、编辑cz_study/settings.py

注册Django REST framework

INSTALLED_APPS = [
    ...
    'rest_framework',
    'django_filters',
]

配置MySQL数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'cz_study',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': 'localhost',
        'PORT': 3306,
    }
}

语言与时区配置

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_TZ = False

2、创建数据库

进入mysql客户端

mysql -uroot -p
  
  
# 输入root用户的密码
  
  

创建cz_study数据库

> create database cz_study;

3、运行程序

python manage.py runserver

访问 [

3 创建应用

1、创建cms

创建应用

django-admin startapp cms

新建文件夹apps,extra_apps,将cms文件夹移动到apps中,并在 cz_study/settings.py 中增加搜索路径:

import sys
...
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))

注册应用(cz_study/settings.py)

INSTALLED_APPS = [
    ...
    'cms.apps.CmsConfig',
]

2、创建ucenter

创建应用,并将ucenter文件夹移动到apps中

django-admin startapp ucenter

添加用户模型(apps/ucenter/models.py)

from datetime import datetime
from django.db import models
from django.contrib.auth.models import AbstractUser


class CzUser(AbstractUser):
    """
    用户信息
    """
    GENDER_CHOICES = (
        ("male", "男"),
        ("female", "女")
    )
    name = models.CharField(verbose_name="姓名", max_length=30, null=True, blank=True)
    birthday = models.DateField(verbose_name="出生年月", null=True, blank=True)
    gender = models.CharField(verbose_name="性别", max_length=6, choices=GENDER_CHOICES, default="female")
    phone = models.CharField(verbose_name="", max_length=11, null=True, blank=True)
    email = models.EmailField(verbose_name="邮箱", max_length=100, null=True, blank=True)
    userpic = models.CharField(verbose_name="用户头像", max_length=255, blank=True, null=True)
    qq = models.CharField(verbose_name="qq号码", max_length=32, blank=True, null=True)

    class Meta:
        verbose_name = "用户信息"
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.username

注册应用(cz_study/settings.py)

INSTALLED_APPS = [
    ...
    'ucenter.apps.UcenterConfig',
]

配置用户模型

AUTH_USER_MODEL = 'ucenter.CzUser'

4 同步数据库

生成迁移文件

python manage.py makemigrations

同步数据库

python manage.py migrate

5 小结

  • 创建项目:django-admin startproject 项目名称
  • 配置

    • INSTALLED_APPS
    • DATABASES
    • 其他配置
  • 运行程序:python manage.py runserver
  • 创建应用:

    • django-admin startapp 应用名称
    • 注册应用:INSTALLED_APPS
    • 配置用户模型:AUTH_USER_MODEL
  • 同步数据库

    • 生成迁移文件:python manage.py makemigrations
    • 同步数据库:python manage.py migrate

导入CMS数据库

学习目标

  • 使用Studio 3T软件导入cms数据库
  • 使用mongoimport导入cms数据库

1 使用Studio 3T软件导入cms数据库

1、创建cz_study数据库

2、导入 cms数据库

右键数据库,点击导入数据库

打开窗口,选择第一个 json。

下一步,选择要导入的数据文件(json文件)

下一步操作即可完成。

导入成功:

2 使用mongoimport导入cms数据库

使用mongoimport命令行从资料中提供的cz_study文件夹中导入数据

mongoimport -d=cz_study --file=cz_study/sys_dictionary.json
mongoimport -d=cz_study --file=cz_study/cms_config.json
mongoimport -d=cz_study --file=cz_study/cms_site.json
mongoimport -d=cz_study --file=cz_study/cms_template.json
mongoimport -d=cz_study --file=cz_study/cms_page.json

其中 -d指定要导入到的数据库,--file指定包含导入数据的json文件

3 小结

  • 使用mongoimport导入数据

    • mongoimport -d=cz_study --file=cz_study/sys_dictionary.json

MongoEngine入门

在Django中使用MongoDB

学习目标

  • 了解CMS数据库选型
  • 掌握在Django中使用MongoEngine的依赖包及配置方法

1 数据库选型

CMS采用MongoDB数据库存储CMS页面信息,CMS选用Mongodb的原因如下:

1、Mongodb是非关系型数据库,存储Json格式数据 ,数据格式灵活。

2、相比管理等核心数据CMS数据没有那么重要,且没有事务管理要求。

2 django-rest-framework-mongoengine

安装依赖包

pip install mongoengine==0.17.0 django-rest-framework-mongoengine==3.3.1

注册django-rest-framework-mongoengine应用

INSTALLED_APPS = [
    ...
    'rest_framework_mongoengine',
]

连接到MongoDB数据库

from mongoengine import connect
connect('cz_study', host='127.0.0.1', port=27017)
connect('test', host='127.0.0.1', port=27017, alias='test')    # 用于后面的测试

3 小结

  • 依赖包:mongoengine、django-rest-framework-mongoengine
  • 注册应用:rest_framework_mongoengine
  • 连接MongoDB:connect('test', host='127.0.0.1', port=27017, alias='test')

定义文档

学习目标

  • 掌握定义文档的方法
  • 了解Django的manage工具提供的shell命令

1 定义文档类

MongoEngine的文档定义与Django的模型定义类似,文档类必须继承mongoengine.Document类

接下来以"图书-英雄"管理为例进行演示。

创建应用booktest并注册,然后在models.py 文件中定义文档类。

from mongoengine import Document
from mongoengine import fields


class BookInfo(Document):
    """
    定义图书文档类
    """
    btitle = fields.StringField(max_length=20, verbose_name='名称')
    bpub_date = fields.DateTimeField(verbose_name='发布日期')
    bread = fields.IntField(default=0, verbose_name='阅读量')
    bcomment = fields.IntField(default=0, verbose_name='评论量')

程序员一诺python
16 声望18 粉丝

python技术发烧友 资料收集狂