前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Django】基于PythonWeb的Django框架设计实现天天生鲜系统-2项目开发部署环境

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

作者头像
天道Vax的时间宝藏
发布2021-08-11 15:50:14
9700
发布2021-08-11 15:50:14
举报
文章被收录于专栏:用户5305560的专栏

大致了解我们要完成的项目之后, 我们要进行项目的开发. 我们并不是直接讲解 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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/05/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 项目创建
  • 2 模型创建
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档