基于 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遍历zip文件输出名称时出现乱码问题的解决方法
Apr 08 Python
Python实现简单字典树的方法
Apr 29 Python
Python中的异常处理相关语句基础学习笔记
Jul 11 Python
Anaconda多环境多版本python配置操作方法
Sep 12 Python
一篇文章快速了解Python的GIL
Jan 12 Python
Python 2.7中文显示与处理方法
Jul 16 Python
python使用numpy读取、保存txt数据的实例
Oct 14 Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 Python
seek引发的python文件读写的问题及解决
Jul 26 Python
Python flask框架如何显示图像到web页面
Jun 03 Python
python中rb含义理解
Jun 18 Python
pandas DataFrame.shift()函数的具体使用
May 24 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中取得文件的后缀名?
2012/02/20 PHP
深入PHP magic quotes的详解
2013/06/17 PHP
php实现的支持断点续传的文件下载类
2014/09/23 PHP
php自定义函数实现统计中文字符串长度的方法小结
2017/04/15 PHP
SWFObject基本用法实例分析
2015/07/20 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
2016/06/12 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
React全家桶环境搭建过程详解
2018/05/18 Javascript
详解微信小程序图片地扯转base64解决方案
2019/08/18 Javascript
node后端服务保活的实现
2019/11/10 Javascript
python正则匹配抓取豆瓣电影链接和评论代码分享
2013/12/27 Python
跟老齐学Python之Python文档
2014/10/10 Python
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
python中pass语句用法实例分析
2015/04/30 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
Python进程间通信Queue消息队列用法分析
2019/05/22 Python
python爬虫实现中英翻译词典
2019/06/25 Python
Python使用matplotlib绘制三维参数曲线操作示例
2019/09/10 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
在keras里实现自定义上采样层
2020/06/28 Python
灵活运用CSS3特性绘制简易版围棋效果
2016/09/28 HTML / CSS
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
关于.NET, HTML的五个问题
2012/08/29 面试题
介绍一下Java中的static关键字
2012/05/12 面试题
编辑个人求职信范文
2013/09/21 职场文书
写自荐信三大法宝
2014/01/24 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
汽车销售员工作总结
2015/08/12 职场文书
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL