当前位置 博文首页 > 孤寒者的博客:ONE——Django项目前期准备(Django现状;开发流

    孤寒者的博客:ONE——Django项目前期准备(Django现状;开发流

    作者:[db:作者] 时间:2021-07-26 08:40

    第一部分:项目前期准备

    一、Django 现状

    1、Django开发前景

    1.1 Django的厉害之处

    • 在python中,与web开发环境相关的包有13045个
    • django就占了9091个,大约70%
    • 在python中,活跃的web框架多达54个,其中最活跃的有,Django,Flask,Pyramid,Zope
    • 最受欢迎的就是Django,没有之一
    • 超过5263个中大型网站使用Django开发

    1.2 哪些公司在使用Django?

    • 国内:豆瓣、知乎
    • 国外:Instagram、Mozilla、Pinterest、Disqus、National Geographic、NASA

    2、版本

    • 1.11(2017年4月发布,支持python2.7,在2020全面推行python3之后,将不再提供服务)
    • 2.0-2.1(2.0版本,2017年12月发布,只支持python3,将长期支持,向下兼容)
    • 2.0主要在一下方面做了改进:
      • 简化url路由语法
      • 更友好的admin站点
      • auth支持更高强度的加密算法(PBKDF2)
      • runserver支持HTTP 1.1

    在这里插入图片描述

    二、开发流程

    本项目,我们会尽量模拟真实web开发场景来开发项目,让我们体验在开发团队中工作一般的快感!

    开发流程图如下图所示:

    在这里插入图片描述

    三、需求分析

    1、网站类型

    本项目主要完成一个个人新闻博客类网站,用于知识分享,交友互动等
    

    2、主页模块

    • 轮播图
    • 热门文章推荐
    • 文章标签、文章列表(可加载更多)
    • 左侧广告展示
    • 个人联系方式

    3、用户模块

    • 注册
      • 短信验证码(云通信平台)
      • 图片验证码
    • 登录
      • 用户名和手机号登录
      • 第三方登录(可能会拓展QQ、微信登录等)
    • 个人中心页

    4、在线视频模块

    实现在线播放视频功能,用于福利课视频展示等。
    

    5、文件下载模块

    实现相关资源共享,如课件笔记等。
    

    6、搜索模块

    使用流行的elasticsearch搜索引擎框架,实现网站资源快速搜索定位功能。
    

    7、后台管理模块

    • 文章标签管理
    • 文章发布
    • 文章管理
    • 热门文章管理
    • 主页轮播图管理
    • 课程发布
    • 文档上传
    • 账号管理

    四、项目架构

    1、网站开发模式

    前后端部分分离的开发模式
    

    拓展:网站开发模式两种方式!

    (1)前后端不分离:

    请求的数据交互如下图:
    在这里插入图片描述

    (2)前后端分离:

    在前后端分离的应用模式中,我们通常将后端开发的每个视图都称为一个接口,或者API,前端通过访问接口来对数据进行增删改查。

    对应的数据交互如下图 :

    在这里插入图片描述

    2、前端技术

    html + css + js + jquery(ajax)
    

    3、后端技术

    Django2.1 + Django restframework(一种设计风格/规范) + mysql + redis + celery(可能会拓展) + elaticsearch + nginx + uwsgi
    

    在这里插入图片描述


    第二部分:Git

    一、为什么要使用Git?

    1.传统文档管理

    在这里插入图片描述

    在我们写毕业论文时可能会遇到,多次修改之后的论文命名方式:

    论文_改.doc、论文_改改.doc、论文_改改改.doc、论文_改改改改.doc、论文_改改改改再改.doc、论文_改改改改再改TM不改了.doc
    

    2.源代码管理的好处

    • 方便多人协同开发
    • 方便版本控制

    3.Git的诞生

    在这里插入图片描述

    • 作者Linux之父:Linus Torvalds
    • git开发目的:为了辅助Linux内核的开发
    • 是Linus被逼无奈,花了2个星期用c写的
    • 2008年,GitHub网站上线,为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub
    • Git迅速成为最流行的分布式版本控制系统(没有之一)

    二、Git结构

    Git是分布式管理系统。服务端和客户端都有版本控制功能,都能进行代码的提交,合并,修改

    图一
    在这里插入图片描述

    图二
    在这里插入图片描述

    三、本地仓库操作

    1.安装git

    • ubuntu下安装
      sudo apt-get install git
    • windows下安装(本人使用)
      gitforwindows官网
      点击下载

    2.查看是否安装成功

    git --version
    

    在这里插入图片描述

    3.创建本地仓库

    1. 创建一个文件夹用于存放项目文件(myporject)

    2. 新建本地仓库
      cd ~/myproject/
      # 初始化
      git init
      # 会创建一个.git的隐藏文件,关于版本控制的文件都存放在这里,绝对不要改动
      在这里插入图片描述

    3. 配置个人信息

           # 配置全局信息(怎样设置无所谓,因为不需要使用;一台电脑设置一下即可!)
           git config --global user.name 'cool'
           git config --global user.email '1915344876@qq.com'
           # 配置信息会保存在家目录下
           ~/.gitconfig
    

    在这里插入图片描述

           # 配置本项目个人信息(注意:一定要认真设置,和我们远程提交的终端设置的要一模一样,不然会提交失败;而且每搞一个项目都要配置一下哦!比如:咱后面会上传到码云到!)
           git config user.name 'cool2'
           git config user.email '1915344876@qq.com'
           # 配置信息存储在当前目录下的.git/config下
    

    在这里插入图片描述

    4.添加文件

    创建好了本地仓库,就准备开始开发了。

    在项目文件加下创建readme.txt文件,输入以下内容。(注意:现在这个txt文件处于工作区中)

    这是一个git学习的项目。
    

    使用命令git status可以发现,此txt文件标红,意思就是我们需要使用git add命令将其提交:
    在这里插入图片描述

    将文件添加到代码库分两步

    1. 先添加到暂存区
      git add readme.txt
      在这里插入图片描述

    2. 提交到仓库
      git commit -m ‘这是一个文本文件’

    在这里插入图片描述
    git commit命令的-m参数后输入的内容是提交说明。命令执行成功后显示几个文件被改动,加了多少行。每提交一次就会生成一个版本。

    按照这个操作流程,修改readme.txt内容如下

    这是一个git学习的项目。
    千里之行始于脚下。
    

    git add . 可以一次性把当前目录中所有有改动的文件都添加到暂存区。

    在这里插入图片描述

    在这里插入图片描述在这里插入图片描述

    小插曲:因为编码方式的不同可能会出现乱码。
    解决方法:
    
    打开你的终端,依次输入以下命令:
    $ git config --global core.quotepath false # 设置 git status utf-8编码
    
    $ git config --global gui.encoding utf-8 # 设置Git GUI界面utf-8编码
    
    $ git config --global i18n.commit.encoding utf-8 #设置commit信息utf-8编码
    
    $ git config --global i18n.logoutputencoding utf-8 # 设置输出 log utf-8 编码
    
    
    

    5.历史版本

    辛勤的工作一段时候,我们提交了很多次了,有很多的版本,怎么查看这些提交记录呢?

    git log       (只能查看历史版本)
    
    git reflog	(可以查看所有版本!)
    

    git reflog可以查看所有分支的所有操作记录(包含已删除的commit记录)。

    git log不能查看已删除的commit记录。
    在这里插入图片描述

    6.版本回退

    1. git reset --hard HEAD^
      • HEAD表示当前最新版本
      • HEAD^表示当前最新版本的前一个版本
      • HEAD^^表示当前最新版本的前两个版本,以此类推
      • HEAD~1表示当前最新版本的前一个版本
      • HEAD~8表示当前最新版本的前8个版本,以此类推
    2. git reset --hard 版本号
      当版本非常多时选择这种方法。版本号就是每次commit生成的hash值,只用取前几位数。

    7.撤销修改

    运行git status命令会显示当前工作区,暂存区,仓库的状态。当工作区的所有代码都提交到仓库,并和仓库保持一致时会显示:

    On branch master
    nothing to commit, working tree clean
    

    一旦有修改,git status命令会显示改动的文件,以及你应该怎么提交这些修改。

    1. 撤销工作区代码
      git checkout 文件名
      修改文件后没有执行add,运行此命令可以撤销所有修改,一旦撤销没有后悔药哦,在确定抛弃所有修改时使用。
    2. 撤销暂存区的代码
      # 第一步:将暂存区代码撤销到工作区
      git reset HEAD 文件名
      # 第二步:撤销工作区代码
      git checkout 文件名

    8.对比文件

    1. 对比本地仓库与工作区
      git diff HEAD – 文件名
    2. 对比本地仓库个版本代码
      git diff HEAD HEAD^ – 文件名

    9.文件删除

    1. 删除没有添加进版本库中的工作区中的文件
      # 直接删除不用做任何操作
    2. 删除已添加进工作区但没有提交的文件
      # 1.先撤回工作区
      git reset HEAD 文件名
      # 2.直接删除
      rm 文件名
    3. 已提交到版本库
      # 1.删除文件
      rm 文件名
      # 2.运行 git add .
      git add .
      # 3.提交
      git commit -m ‘delete some file’

    四、远程仓库

    要实现多人协作分工,就需要git服务端。对于我们学习来说,自己去搭建一个服务端太费事,再说你写的代码也不是啥国家战略秘密,不用担心给别人看到了。前文提到了github网站,它就是一个git服务端,最重要的是不要钱,很多开源项目都托管在它的上面了。但是它的服务器在境外,国内访问比较缓慢,好消息是,国内也成立了一个网站叫码云不是马云,学习git可以通过这个网站,很多国内项目也开始托管在码云上了。

    不管是是使用github还是使用码云,步骤是差不多的,区别是github是全英文的慢一点。这里以码云为例。

    首先你需要注册一个码云的账户,然后创建一个空的仓库。这个在码云上有教程大家自行操作。

    创建好仓库后,你的仓库会有两个地址,一个是https,一个是ssh。因为使用https需要输入用户名和密码,推荐使用ssh的方式。要使用ssh你需要设置你账户的ssh公钥。公钥管理

    要把本地仓库和远程仓库联系起来有两种方式:

    1.添加远程仓库

    1. 克隆
      远程仓库里已经存在项目文件,你买了台新电脑,需要将项目从远程仓库clone(克隆)到本地进行工作。
      # 首先cd到你要存放项目的目录
      cd ~/projects
      # 然后运行下面的命令
      git clone git@gitee.com:用户个性地址/name.git
    2. 本地初始化一个仓库,设置远程仓库地址后再做push
      和第一种方式的区别在于先创建仓库
      git init # 创建仓库
      git remote add origin git@gitee.com:用户个性地址/name.git

    2.推送到远程仓库

    当本地工作完成,需要将代码推送到远程仓库,使用git push命令

    git push origin master
    

    3.从远程仓库拉取更新到本地仓库

    你的同事和你协同开发,他工作的那部分内容完成了,并且已经推送到远程仓库,你接下来的工作需要依赖他的那部分代码,那么你需要将远程仓库代码拉取到本地仓库,使用git pull命令

    git pull origin master
    

    实践:使用码云,在远程中新建仓库后按如下命令在本地项目文件夹下Git操作如下命令即可!

    在这里插入图片描述
    在这里插入图片描述

    刷新界面可发现已经将本地代码推送到了远程仓库:

    在这里插入图片描述

    五、分支管理

    正常的开发项目中都是多人协作,每个人的任务一般不会一天就完成,如果把没有完成的代码提交到远程仓库会影响被人工作。git提供了分支的功能就不用担心了,可以创建一个自己的分支,在上面干活,想提交就提交,等到工作完成再一次性合并到原来的分支。

    1.创建分支

    新建git仓库时会默认创建一个分支master,它叫主分支。一般情况我们不会直接在主分支上干活,它主要用来发布版本。

    创建一个开发分支develop

    git branch develop
    

    再切换到develop分支

    git checkout develop
    显示如下:
    Switched to branch 'develop'
    

    这两条命令也可以通过一条命令来实现

    git checkout -b develop
    

    -b参数表示创建并切换。

    使用git branch命令查看当前分支(*表示正在使用的分支)

    git branch
    * develop
      master
    

    2.合并分支

    创建好develop分支后,你开始干活,完成上级领导交给你的任务,根据用户的手机壳颜色更换app主题,5分钟之后开发完毕,提交:

    $ git add change_theme.py
    
    $ git commit -m 'complete change theme'
    

    经过测试功能完成,现在我们要合并到master分支

    首先切换到master

    $ git checkout master
    Switched to branch 'master'
    

    查看工作区,你会发现刚才开发的功能文件没有了,不要惊慌,因为那个提交是在develop分支上,现在我们把develop分支的工作合并到master分支上:

    $ git merge develop
    
    Updating 7173db6..5b83e32
    Fast-forward
     change_theme.py | 0
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 change_theme.py
    

    git merge命令用于合并指定分支到当前分支。合并后,在查看文件夹发现,change_theme.py文件又回来了。

    3.删除分支

    合并完之后你也可以删除掉develop分支:

    $ git branch -d develop
    Deleted branch develop (was 5b83e32).
    
    $ git branch
    * master
    
    cs