基于 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创建只读属性对象的方法(ReadOnlyObject)
Feb 10 Python
python模块之sys模块和序列化模块(实例讲解)
Sep 13 Python
Python实现连接postgresql数据库的方法分析
Dec 27 Python
Python使用smtp和pop简单收发邮件完整实例
Jan 09 Python
python3解析库lxml的安装与基本使用
Jun 27 Python
python 处理telnet返回的More,以及get想要的那个参数方法
Feb 14 Python
Python文件读写常见用法总结
Feb 22 Python
Python中函数的基本定义与调用及内置函数详解
May 13 Python
浅谈python 中类属性共享的问题
Jul 02 Python
利用python下载scihub成文献为PDF操作
Jul 09 Python
如何在vscode中安装python库的方法步骤
Jan 06 Python
浅谈pytorch中的dropout的概率p
May 27 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
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
SWFObject 2.1以上版本语法介绍
2010/07/10 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
Vue数据驱动模拟实现3
2017/01/11 Javascript
loading动画特效小结
2017/01/22 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
[01:34]DOTA2 7.22版本新增神杖效果一览(敏捷英雄篇)
2019/05/28 DOTA
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
Python不规范的日期字符串处理类
2014/06/10 Python
详解Python pygame安装过程笔记
2017/06/05 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
python破解zip加密文件的方法
2018/05/31 Python
Python用5行代码写一个自定义简单二维码
2018/10/21 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
Python多进程方式抓取基金网站内容的方法分析
2019/06/03 Python
浅谈Python中range与Numpy中arange的比较
2020/03/11 Python
Python sublime安装及配置过程详解
2020/06/29 Python
python判断是空的实例分享
2020/07/06 Python
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
2014/07/16 面试题
人事助理自荐信
2014/02/02 职场文书
法学专业自我鉴定
2014/02/05 职场文书
2014年教师工作总结
2014/11/10 职场文书
合作合同协议书范本
2015/01/27 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
python基础之爬虫入门
2021/05/10 Python