基于 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实现的二叉树算法和kmp算法实例
Apr 25 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
Dec 12 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
Mar 15 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
Python脚本完成post接口测试的实例
Dec 17 Python
详解如何在Apache中运行Python WSGI应用
Jan 02 Python
Python JSON格式数据的提取和保存的实现
Mar 22 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
Jun 14 Python
DJango的创建和使用详解(默认数据库sqlite3)
Nov 18 Python
pytorch 实现打印模型的参数值
Dec 30 Python
基于python修改srt字幕的时间轴
Feb 03 Python
在python3中实现查找数组中最接近与某值的元素操作
Feb 29 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中多维数组的foreach遍历示例
2014/06/13 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
php 判断字符串编码是utf-8 或gb2312实例
2016/11/01 PHP
php中错误处理操作实例分析
2019/08/23 PHP
javascript 伪数组实现方法
2010/10/11 Javascript
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
面向对象继承实例(a如何继承b问题)(自写)
2013/07/01 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
js判断登陆用户名及密码是否为空的简单实例
2016/05/16 Javascript
整理一下常见的IE错误
2016/11/18 Javascript
JavaScript用JSONP跨域请求数据实例详解
2017/01/06 Javascript
整理关于Bootstrap警示框的慕课笔记
2017/03/29 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
2019/07/02 Javascript
基于layui实现高级搜索(筛选)功能
2019/07/26 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
基于JS实现计算24点算法代码实例解析
2020/07/23 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
python使用urllib模块和pyquery实现阿里巴巴排名查询
2014/01/16 Python
python中实现k-means聚类算法详解
2017/11/11 Python
python微信跳一跳系列之自动计算跳一跳距离
2018/02/26 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
使用Python 自动生成 Word 文档的教程
2020/02/13 Python
Asics日本官网:鬼冢八喜郎创立的跑鞋运动品牌
2017/10/18 全球购物
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
最新销售员个人自荐信
2013/09/21 职场文书
一年级家长会邀请函
2014/01/25 职场文书
工厂标语大全
2014/10/06 职场文书
个人务虚会发言材料
2014/10/20 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
员工自我工作评价
2015/03/06 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书
Pytorch DataLoader shuffle验证方式
2021/06/02 Python