基于 Django 的手机管理系统实现过程详解


Posted in Python onAugust 16, 2019

一、概述

打算通过设计数据库,然后结合 Python 框架Django,实现在网页上对数据库的增删改查(本例以手机的管理为例,不考虑订购功能),有普通用户界面和管理员用户界面,普通用户只能做简单的查看需求,管理员用户可以实现对数据库内容的实时修改。

网站主体如下图:

基于 Django 的手机管理系统实现过程详解

二、设计数据库

根据业务需求,设计数据表,需要下列这些属性:

手机型号、品牌、手机描述、出厂年份、价格、照片、产地。

根据数据表设计原则,数据表设计需要满足基本的函数依赖和范式要求,因此我们将上述属性拆分为四张表格,并建立这些数据表之间的联系,相关的E-R 图如图所示:

(由于 Django 在建立每一个数据表的时候就会有一个内建的 id 作为主键,因此在此就不需要另外再设置主键字段)

基于 Django 的手机管理系统实现过程详解

此数据库字段由于是我从 sqlite 迁移到 MySQL 中,Django 自动帮我再生成的字段,所以有些字段名和我在 Django 写的字段不一致,但数据表关系还是一致的。

在 Django 中设计数据表相关代码如下:

from django.db import models

# Create your models here.

class Maker(models.Model):
 name = models.CharField(max_length=10)
 country = models.CharField(max_length=10)

 def __str__(self):
  return self.name

class PModel(models.Model):
 maker = models.ForeignKey(Maker, on_delete=models.CASCADE)
 name = models.CharField(max_length=20)
 url = models.URLField(default='http://i.imgur.com/OusiGB.png')

 def __str__(self):
  return self.name

class Product(models.Model):
 pmodel = models.ForeignKey(PModel, on_delete=models.CASCADE, verbose_name='型号')
 nickname = models.CharField(max_length=15, default='超值二手手机', verbose_name='摘要')
 description = models.TextField(default='暂无说明', verbose_name='暂无说明')
 year = models.PositiveIntegerField(default=2016, verbose_name='出厂年份')
 price = models.PositiveIntegerField(default=0, verbose_name='价格')

 def __str__(self):
  return self.nickname

class PPhoto(models.Model):
 product = models.ForeignKey(Product, on_delete=models.CASCADE)
 description = models.CharField(max_length=20, default='产品照片')
 url = models.URLField(default='http://i.imgur.com/z230eeq.png')

 def __str__(self):
  return self.description

在终端下执行以下指令,进行数据库的更新以及迁移操作,并创建管理员用户:

python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver

然后插入数据。

注意安装 Python 的 MySQL 驱动程序这块,刚开始安装 MySQL 官网提供的 mysql-python 这个模块,但在 Python3环境下会报错,原因是mysql-python 模块不支持 Python3版本,所以安装使用pymysql 模块。
注意在 models.py 文件同级文件中的init.py 修改为:

import pymysql
pymysql.install_as_MySQLdb()

操作便与 mysql-python 的使用方法一致了。

网站管理员登录界面:

基于 Django 的手机管理系统实现过程详解

管理员的增删改查界面:

基于 Django 的手机管理系统实现过程详解

三、设计网站

设计网站,在 Django 中增加 static 文件和 template 文件,套用相关模板和框架(这里运用了 bootstrap),编写 HTML 文件,调用数据库中的内容,设计的网站如下(即普通用户能查看的界面):

主页面:

基于 Django 的手机管理系统实现过程详解

商品详情界面:

基于 Django 的手机管理系统实现过程详解

四、总结

至此,一个简单的 手机管理系统就被我们实现出来了(Django + Bootstrap + MySQL),当然其中还存在中很多的不足,比如没有实现普通用户登录功能,HTML 页面写的也比较简陋,后续有时间会继续加以完善。
代码已上传至 GitHub:

https://github.com/weixuqin/myDjango/tree/master/test3

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现采用进度条实时显示处理进度的方法
Dec 19 Python
python针对excel的操作技巧
Mar 13 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
python 统计数组中元素出现次数并进行排序的实例
Jul 02 Python
对python添加模块路径的三种方法总结
Oct 16 Python
Python selenium根据class定位页面元素的方法
Feb 26 Python
解决.ui文件生成的.py文件运行不出现界面的方法
Jun 19 Python
Python pip 安装与使用(安装、更新、删除)
Oct 06 Python
python实现KNN分类算法
Oct 16 Python
Pandas+Matplotlib 箱式图异常值分析示例
Dec 09 Python
基于opencv的selenium滑动验证码的实现
Jul 24 Python
python实现简单的名片管理系统
Apr 26 Python
python创建与遍历List二维列表的方法
Aug 16 #Python
python每天定时运行某程序代码
Aug 16 #Python
pyinstaller打包opencv和numpy程序运行错误解决
Aug 16 #Python
Python Web框架之Django框架Form组件用法详解
Aug 16 #Python
Python自动化导出zabbix数据并发邮件脚本
Aug 16 #Python
python禁用键鼠与提权代码实例
Aug 16 #Python
Python函数装饰器原理与用法详解
Aug 16 #Python
You might like
php Try Catch异常测试
2009/03/01 PHP
深入探讨<br />和 \r\n两者有什么区别??
2013/06/05 PHP
dedecms函数分享之获取某一栏目所有子栏目
2014/05/19 PHP
php强制下载文件函数
2016/08/24 PHP
php获取linux命令结果的实例
2017/03/13 PHP
php生出随机字符串
2017/07/06 PHP
javascript 浏览器检测代码精简版
2010/03/04 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
2012/12/12 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
2017/01/14 Javascript
JS中appendChild追加子节点无效的解决方法
2018/10/14 Javascript
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
axios 实现post请求时把对象obj数据转为formdata
2019/10/31 Javascript
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
python图像处理之镜像实现方法
2015/05/30 Python
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
SHEIN香港:价格实惠的女性时尚服装
2018/08/14 全球购物
俄罗斯购买自行车网站:Vamvelosiped
2021/01/29 全球购物
学校十一活动方案
2014/02/01 职场文书
网络研修随笔感言
2014/02/17 职场文书
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书
离婚案件答辩状
2015/05/22 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
CSS作用域(样式分割)的使用汇总
2021/11/07 HTML / CSS
Java 定时任务技术趋势简介
2022/05/04 Java/Android