基于 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制作检测Linux运行信息的工具的教程
Apr 01 Python
Python中获取对象信息的方法
Apr 27 Python
Python和Perl绘制中国北京跑步地图的方法
Mar 03 Python
python添加模块搜索路径方法
Sep 11 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
Feb 07 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
Python中反射和描述器总结
Sep 23 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
Feb 22 Python
Python箱型图绘制与特征值获取过程解析
Oct 22 Python
详解python logging日志传输
Jul 01 Python
五种Python转义表示法
Nov 27 Python
如何利用python 读取配置文件
Jan 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
Zerg建筑一览
2020/03/14 星际争霸
php生成文件
2007/01/15 PHP
php一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
PHP实现扎金花游戏之大小比赛的方法
2015/03/10 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
2019/05/13 PHP
js图片预加载示例
2014/04/30 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
Bootstrap 手风琴菜单的实现代码
2017/01/20 Javascript
Vue之mixin全局的用法详解
2018/08/22 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
微信小程序获取地理位置及经纬度授权代码实例
2019/09/18 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python筛选出两个文件中重复行的方法
2018/05/31 Python
python selenium实现发送带附件的邮件代码实例
2019/12/10 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
python遍历路径破解表单的示例
2020/11/21 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
New Era英国官网:美国棒球帽品牌
2018/03/21 全球购物
美国帽子俱乐部商店:Hat Club
2019/07/05 全球购物
教职工代表大会主持词
2014/04/01 职场文书
花坛标语大全
2014/06/30 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
标准离婚协议书范文下载
2014/11/30 职场文书
升学宴学生答谢词
2015/01/05 职场文书
2015年五一劳动节演讲稿
2015/03/18 职场文书
安全承诺书格式范本
2015/04/28 职场文书
学校党支部承诺书
2015/04/30 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android