基于 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文件读写并使用mysql批量插入示例分享(python操作mysql)
Feb 17 Python
pycharm 使用心得(九)解决No Python interpreter selected的问题
Jun 06 Python
python从入门到精通(DAY 1)
Dec 20 Python
django轻松使用富文本编辑器CKEditor的方法
Mar 30 Python
Python numpy实现数组合并实例(vstack,hstack)
Jan 09 Python
python flask中静态文件的管理方法
Mar 20 Python
Python基于多线程实现抓取数据存入数据库的方法
Jun 22 Python
python事件驱动event实现详解
Nov 21 Python
python使用PIL实现多张图片垂直合并
Jan 15 Python
python实现opencv+scoket网络实时图传
Mar 20 Python
TensorFlow使用Graph的基本操作的实现
Apr 22 Python
keras的siamese(孪生网络)实现案例
Jun 12 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
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
PHP7+Nginx的配置与安装教程详解
2016/05/10 PHP
非常好的js代码
2006/06/27 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
关于Jquery中的事件绑定总结
2016/10/26 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
浅谈React高阶组件
2018/03/28 Javascript
监控Nodejs的性能实例代码
2019/07/02 NodeJs
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
vue.js实现双击放大预览功能
2020/06/23 Javascript
在vue中使用echarts(折线图的demo,markline用法)
2020/07/20 Javascript
[37:37]DAC2018 4.4 淘汰赛 Optic vs Mineski 第二场
2018/04/05 DOTA
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
Python实现替换文件中指定内容的方法
2018/03/19 Python
flask入门之表单的实现
2018/07/18 Python
使用python进行拆分大文件的方法
2018/12/10 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
CSS3结构性伪类选择器九种写法
2012/04/18 HTML / CSS
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
学生实习推荐信范文
2013/11/26 职场文书
机关门卫岗位职责
2013/12/30 职场文书
贯彻学习两会心得体会范文
2014/03/17 职场文书
七一党日活动总结
2014/07/08 职场文书
2016年社区文体活动总结
2016/04/06 职场文书
Windows11插耳机没反应怎么办? win11耳机没声音的多种解决办法
2021/11/21 数码科技