基于 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 第一步 hello world
Sep 25 Python
python使用线程封装的一个简单定时器类实例
May 16 Python
详解Swift中属性的声明与作用
Jun 30 Python
Python分治法定义与应用实例详解
Jul 28 Python
python topN 取最大的N个数或最小的N个数方法
Jun 04 Python
python实现在cmd窗口显示彩色文字
Jun 24 Python
Python Pandas数据结构简单介绍
Jul 03 Python
Python实现读取并写入Excel文件过程解析
May 27 Python
一文解决django 2.2与mysql兼容性问题
Jul 15 Python
Python通过zookeeper实现分布式服务代码解析
Jul 22 Python
Django DRF APIView源码运行流程详解
Aug 17 Python
Python collections.deque双边队列原理详解
Oct 05 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中用正则表达式清除字符串的空白
2011/01/17 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
预加载css或javascript的js代码
2010/04/23 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
通过javascript把图片转化为字符画
2013/10/24 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
js移动焦点到最后位置的简单方法
2016/11/25 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
关于前后端json数据的发送与接收详解
2017/07/30 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
Python如何快速上手? 快速掌握一门新语言的方法
2017/11/14 Python
Pycharm无法显示动态图片的解决方法
2018/10/28 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
python绘制直方图和密度图的实例
2019/07/08 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
python中numpy数组与list相互转换实例方法
2021/01/29 Python
法国房车租赁网站:Yescapa
2019/08/26 全球购物
机电专业毕业生推荐信
2013/11/10 职场文书
一份报关员的职业规划范文
2014/01/08 职场文书
幼儿园中班评语大全
2014/04/17 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
2015年财务人员工作总结
2015/04/10 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
合作意向书范本
2019/04/17 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python
Python之基础函数案例详解
2021/08/30 Python
Nginx+Tomcat负载均衡集群的实现示例
2021/10/24 Servers
python中对列表的删除和添加方法详解
2022/02/24 Python