基于 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 相关文章推荐
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 Python
浅谈使用Python变量时要避免的3个错误
Oct 30 Python
Python爬取十篇新闻统计TF-IDF
Jan 03 Python
Python3 中把txt数据文件读入到矩阵中的方法
Apr 27 Python
Python3中的json模块使用详解
May 05 Python
分析python请求数据
Aug 19 Python
Python使用字典的嵌套功能详解
Feb 27 Python
Python+PyQT5的子线程更新UI界面的实例
Jun 14 Python
对PyQt5的输入对话框使用(QInputDialog)详解
Jun 25 Python
python二元表达式用法
Dec 04 Python
tensorflow 自定义损失函数示例代码
Feb 05 Python
如何解决tensorflow恢复模型的特定值时出错
Feb 06 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与C#的值类型指向区别的详解
2013/05/21 PHP
php获取操作系统语言代码
2013/11/04 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
2015/12/24 PHP
PHP简单判断手机设备的方法
2016/08/23 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
2017/05/15 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
Javascript typeof 用法
2008/12/28 Javascript
javascript笔记 String类replace函数的一些事
2011/09/22 Javascript
javascript判断iphone/android手机横竖屏模式的函数
2011/12/20 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
2016/12/19 Javascript
Input文本框随着输入内容多少自动延伸的实现
2017/02/15 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
2018/02/08 Javascript
vue axios post发送复杂对象问题
2019/06/04 Javascript
解决vue-loader加载不上的问题
2020/10/21 Javascript
初步解析Python中的yield函数的用法
2015/04/03 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
详解python读取和输出到txt
2019/03/29 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
2019/08/28 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
python+flask编写一个简单的登录接口
2020/11/13 Python
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
德国健康生活方式网上商店:Landkaufhaus Mayer
2019/03/12 全球购物
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
民事诉讼授权委托书范文
2014/08/02 职场文书
Matplotlib可视化之添加让统计图变得简单易懂的注释
2021/06/11 Python
nginx日志格式分析和修改
2022/04/28 Servers