【Django】基于PythonWeb的Django框架设计实现天天生鲜系统-2项目开发部署环境

2021-08-11 15:50:14 浏览数 (1)

大致了解我们要完成的项目之后, 我们要进行项目的开发. 我们并不是直接讲解 Django 框架, 而是通过项目驱动的方式, 一步步掌握 Django 框架的基本使用.

1 项目创建

我们的项目基于 Django 框架, 所以我们先创建一个 Django 项目. 创建项目之前, 我们首先搭建我们的项目运行环境:

1.1 搭建开发环境

在开发过程中,当需要使用 python 的包时可以通过 pip 命令联网安装, 所有第三方的包都会被pip安装到Python3的site-packages目录下。 如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python3。如果应用A需要django 1.8.7,而应用B需要django 1.8.2. 这种情况下,每个应用可能需要各自拥有一套 "独立" 的 Python 运行环境。

virtualenv 工具可以用来为一个应用创建一套 "隔离" 的Python运行环境。

安装虚拟环境命令:

代码语言:javascript复制
pip install virtualenv
pip install virtualenvwrapper

virtualenvwrapper 是 virtualenv 的扩展集合, 用于简化虚拟环境创建操作相关操作.

安装好该工具之后, 我们可以通过下面的命令来创建一个隔离的 Python 运行环境:

代码语言:javascript复制
# 创建虚拟环境
mkvirtualenv 虚拟环境名称
# 切换虚拟环境
workon 虚拟环境名称
# 查看已创建的虚拟环境
workon 两次tab键
# 删除虚拟环境
rmvirtualenv 虚拟环境名称
# 退出虚拟环境
deactivate

创建成功虚拟环境之后,会自动切换到这个虚拟环境中, 如果需要切换到其他虚拟环境下或者删除当前虚拟环境, 那么需要先退出当前虚拟环境.

提示1:创建虚拟环境需要联网; 提示2:工作在虚拟环境上,提示符最前面会出现 "(虚拟环境名称)". 在虚拟环境中安装所需要的包(首先workon到虚拟环境中).

我们现在创建我们项目所需的虚拟环境, 名称为: "django-dev-py3", 创建命令如下:

代码语言:javascript复制
mkvirtualenv django-dev-py3

如果你的电脑上安装了多个Python版本, 比如既有 Python 2.7, 也安装了 Python 3.5, 那么在创建虚拟环境时, 可指定使用的 Python 版本, 命令如下:

代码语言:javascript复制
mkvirtualenv django-dev-py3 --python=[python3路径]

执行过程如图25-1所示:

图1

标记红色矩形部分为我执行的命令, 创建完虚拟环境之后, 已经自动切换到了该虚拟环境下工作.

我们项目所使用的包环境如下:

  • Django 1.8.2
  • PyMySQL 0.8.0

我们之所以选择 Django 1.8.2, 原因在于这是一个稳定性高、使用广、文档多的版本.

在线中文文档: http://python.usyiyi.cn/translate/django_182/index.html

我们的项目使用的数据库为 MySQL, 我们选择使用了 PyMySQL 包.

切换到 django-dev-py3 虚拟环境下, 执行包安装命令如下:

代码语言:javascript复制
pip install django==1.8.2
pip install pymysql

1.2 创建项目

切换到 django-dev-py3 虚拟环境下, 执行 cd 命令, 切换到要保存项目的目录下, 我这里创建在桌面, 执行创建 django 项目的命令:

代码语言:javascript复制
django-admin startproject ttsx

"ttsx" 为我们创建项目的名称.

项目创建过程如图25-2所示:

图2

此时我们已经创建好了 django 项目. 该项目的目录结构如图25-2所示, 各个模块文件介绍如下:

  • manage.py 文件是项目运行的入口文件,执行项目配置文件路径;
  • __init__.py 文件为空文件,指定当前目录可作为包使用;
  • settings.py 文件整个项目的配置文件,例如配置应用、模板目录、静态文件目录等等;
  • urls.py 文件是项目的URL配置文件,例如将用户请求的 url 对应到我们某个视图函数;
  • wsgi.py 是项目与支持 WSGI 协议的 WEB 服务器对接的入口文件。

1.3 创建应用

Django 框架通过应用的方式来管理整个网站项目. 一个网站中包含多个子业务模块,比如用户模块,商品模块,新闻模块等等,我们可以将这些子模块称作一个应用。 通过项目页面展示的功能, 我们大致将项目分为两个应用.

  • 和商品展示相关的应用, 该应用我们叫做 goods 应用.
  • 和购物车相关的应用, 该应用我们叫做 cart 应用.

每一个应用中包含了该业务所有的操作. 我们通过下面命令来创建所需要的两个应用:

代码语言:javascript复制
python manage.py startapp goods
python manage.py startapp cart

此时项目的目录结构如下:

图3

项目结构中多出了名字为 cart 和 goods 两个目录, 两个目录内所包含的文件是一模一样的, 每个新创建的应用目录结构和 cart、goods是一样的. 每个应用中模块文件的含义如下:

  • __init__.py 是一个空文件,表示当前目录可以当做一个Python包来使用;
  • tests.py 用于开发测试用例,在实际开发中,如果需要对模块进行测试,可在此文件中编写测试代码;
  • views.py 在此编写视图相关代码;
  • models.py 在此编写模型相关代码;
  • migrations包,稍后讲解模型创建时讲解.

注意: 创建的应用在 settings.py 模块中进行配置, 才能够被项目识别.

打开 ttsx 包下的 settings.py 模块, 找到 INSTALLED_APPS 配置项:

代码语言:javascript复制
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
)

该配置项中配置的是已经安装的应用, 配置该项如下:

代码语言:javascript复制
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'goods',
    'cart',
)

我们的项目以及应用就创建完毕了.

1.4 开发服务器

在开发阶段,为了能够快速预览到网站的效果,django提供了一个纯 Python 编写的轻量级 WEB 服务器,仅在开发阶段使用. 运行服务器命令如下:

代码语言:javascript复制
python manage.py runserver ip:端口

我们一般可不指定ip和端口,直接运行:

代码语言:javascript复制
python manage.py runserver

服务器成功启动后效果如下图25-4所示:

图4

在浏览器中输入网址 "127.0.0.1:8000", 或者按着ctrl键点击上图中标示出来的地址,可以查看当前站点开发效果. 如图25-5所示:

图25-5

如果增加、修改、删除文件,服务器会自动重启. 按 CTRL C 停止服务器.

2 模型创建

2.1 ORM 概述

当前项目的开发都是数据库驱动,即分析出项目中所需要存储的数据,然后设计数据表结构,接下来对通过编写 SQL 语句对数据库中的表进行 CURD 操作。

Django 提供了一套针对数据库操作的代码库, 通过该代码库中提供的工具, 我们可以创建查询、生成SQL语句,并且这些SQL无需开发人员自己处理。这样带来的好处是开发人员无需对 SQL 和 关系型数据库有深入的了解就能直接编写自己的查询。

我们把这套库称作 ORM 库, ORM 是对象关系映射, 对象表示的是我们Python中的对象概念, 关系指的是关系型数据库. 通过 ORM 完成 对象和 数据库中的表之前的一一对应关系. 对对象的任何操作就是对表的操作.

另外 ORM 强大的地方,ORM支持多种数据库后端。可非常简单帮助我们切换后端数据库。Django中提供了自己内置的 ORM 库。我们不需要面向数据库编程,而是通过定义模型类,通过对我们的模型类和对象的方法调用,从而完成了对数据库 CRUD 操作。

简言之, ORM 库帮我们封装了对关系型数据库的 CRUD 操作, 我们不需要编写一行 SQL, 即可完成对数据库的操作.

2.2 数据库配置

打开 ttsx/settings.py 文件, 在该配置文件中默认使用的是 SQLITE 数据库, 原 SQLITE 配置内容如下:

代码语言:javascript复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

现配置项目数据库为 MYSQL:

代码语言:javascript复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # mysql数据库引擎
        'NAME': 'my_ttsx',  # 数据库名字
        'USER': 'root',  # 用户名
        'PASSWORD': 'chuanzhi',  # 密码
        'HOST': 'localhost',  # 主机
        'PORT': '3306'  # 端口
    }
}

配置完成之后, 在 ttsx 目录下的 __init__.py 中增加如下代码:

代码语言:javascript复制
import pymysql
pymysql.install_as_MySQLdb()

一定要保证配置文件中指定的数据库是存在的, 如果不存在需要创建对应数据库. 启动测试服务器, 如果没有报错, 那么表示配置成功.

查看上篇文章:https://cloud.tencent.com/developer/article/1860057

0 人点赞