基于 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去掉字符串中重复字符的方法
Feb 27 Python
深入解析Python设计模式编程中建造者模式的使用
Mar 02 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
Mar 30 Python
Python中生成Epoch的方法
Apr 26 Python
Python基于回溯法子集树模板解决数字组合问题实例
Sep 02 Python
Python利用递归实现文件的复制方法
Oct 27 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
Jan 24 Python
Python+Selenium使用Page Object实现页面自动化测试
Jul 14 Python
解决python replace函数替换无效问题
Jan 18 Python
tensorflow模型保存、加载之变量重命名实例
Jan 21 Python
django 解决扩展自带User表遇到的问题
May 14 Python
python中os.remove()用法及注意事项
Jan 31 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
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
php中在PDO中使用事务(Transaction)
2011/05/14 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
PHP判断手机是IOS还是Android
2015/12/09 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
extjs 04_grid 单击事件新发现
2012/11/27 Javascript
JavaScript回调(callback)函数概念自我理解及示例
2013/07/04 Javascript
多选列表框动态添加,移动,删除,全选等操作的简单实例
2014/01/13 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
2015/09/06 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
记一次用ts+vuecli4重构项目的实现
2020/05/21 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
2020/09/12 Javascript
python使用自定义user-agent抓取网页的方法
2015/04/15 Python
python fabric使用笔记
2015/05/09 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
Python: glob匹配文件的操作
2020/12/11 Python
Django项目在pycharm新建的步骤方法
2021/03/02 Python
syb养殖创业计划书
2014/01/09 职场文书
工程造价专业大学生职业生涯规划书
2014/01/18 职场文书
高中生活自我鉴定
2014/01/18 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
2014年检验科工作总结
2014/11/22 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
大雁塔导游词
2015/02/04 职场文书
教师个人师德总结
2015/02/06 职场文书
业务内勤岗位职责
2015/04/13 职场文书
幼儿园综治宣传月活动总结
2015/05/07 职场文书
交通安全教育心得体会
2016/01/15 职场文书