基于 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的socket编程入门教程
Apr 23 Python
基于Python和Scikit-Learn的机器学习探索
Oct 16 Python
TensorFlow入门使用 tf.train.Saver()保存模型
Apr 24 Python
破解安装Pycharm的方法
Oct 19 Python
python调用staf自动化框架的方法
Dec 26 Python
Django如何开发简单的查询接口详解
May 17 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
Jul 03 Python
Python with语句和过程抽取思想
Dec 23 Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 Python
python 实现的IP 存活扫描脚本
Dec 10 Python
python脚本定时发送邮件
Dec 22 Python
Python帮你解决手机qq微信内存占用太多问题
Feb 15 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
咖啡的植物学知识
2021/03/03 咖啡文化
php实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
PHP请求Socket接口测试实例
2016/08/12 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
2017/07/10 PHP
PHP中isset、empty的用法与区别示例详解
2020/11/05 PHP
jquery中html、val与text三者属性取值的联系与区别介绍
2013/12/29 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
2016/06/08 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
2017/10/12 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
2017/12/18 jQuery
详解Vue CLI3 多页应用实践和源码设计
2018/08/30 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
[54:24]Optic vs TNC 2018国际邀请赛小组赛BO2 第二场
2018/08/18 DOTA
python 实现文件的递归拷贝实现代码
2012/08/02 Python
Python计算程序运行时间的方法
2014/12/13 Python
简单介绍Python中的几种数据类型
2016/01/02 Python
Python装饰器简单用法实例小结
2018/12/03 Python
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
Python argparse模块使用方法解析
2020/02/20 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
全球在线商店:BerryLook
2019/04/14 全球购物
新春联欢会主持词
2014/03/24 职场文书
垃圾桶标语
2014/06/24 职场文书
民主生活会剖析材料
2014/09/30 职场文书
单位委托书
2014/10/15 职场文书
2016年小学生迎国庆广播稿
2015/12/18 职场文书