基于 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性能及进程消耗性能的方法
Jul 25 Python
python计算文本文件行数的方法
Jul 06 Python
浅析Python的Django框架中的Memcached
Jul 23 Python
基于python yield机制的异步操作同步化编程模型
Mar 18 Python
Python实现破解12306图片验证码的方法分析
Dec 29 Python
pandas获取groupby分组里最大值所在的行方法
Apr 20 Python
Django model反向关联名称的方法
Dec 15 Python
浅谈python之高阶函数和匿名函数
Mar 21 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 Python
Python基础之元类详解
Apr 29 Python
python文件与路径操作神器 pathlib
Apr 01 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
COM in PHP (winows only)
2006/10/09 PHP
PHP 中检查或过滤IP地址的实现代码
2011/11/27 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
PHP实现抓取HTTPS内容
2014/12/01 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
javascript实现TreeView 无刷新展开的实例代码
2013/07/13 Javascript
使用原生js写的一个简单slider
2014/04/29 Javascript
javascript 获取HTML DOM父、子、临近节点
2014/06/16 Javascript
全面理解闭包机制
2016/07/11 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
Angularjs的启动过程分析
2017/07/18 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
python网络编程学习笔记(一)
2014/06/09 Python
python UNIX_TIMESTAMP时间处理方法分析
2016/04/18 Python
bat和python批量重命名文件的实现代码
2016/05/19 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
使用 Python 实现文件递归遍历的三种方式
2018/07/18 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
python编写softmax函数、交叉熵函数实例
2020/06/11 Python
Python3基于plotly模块保存图片表格
2020/08/03 Python
python 使用建议与技巧分享(四)
2020/08/18 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
简历自我评价怎么写好呢?
2014/01/04 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
教师自我剖析材料
2014/09/29 职场文书
党员民主评议个人总结
2014/10/20 职场文书
大学生入党自荐书
2015/03/05 职场文书
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle