前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >几乎不写一行代码,快速开发后台功能

几乎不写一行代码,快速开发后台功能

作者头像
博文视点Broadview
发布2022-07-25 10:10:52
8350
发布2022-07-25 10:10:52
举报
文章被收录于专栏:博文视点Broadview

👆点击“博文视点Broadview”,获取更多书讯

Python 长期稳居编程语言排行的前五,不仅已经成为数据分析、人工智能领域必不可少的工具,还被越来越多地公司用于网站搭建。Python 方向岗位的薪水在水涨船高,成为目前最有潜力的编程语言之一。

目前,市场上的Python基础书很多了,那你在学完Python基础书后有没有兴趣用Python的Web框架Django来进行网站开发呢?

本文将介绍商城系统后台的需求分析、架构设计及数据库设计。

商城系统后台,使用Django框架自带的Admin后台管理系统来实现。

在创建好模型后,几乎不写一行代码即可快速开发出商城系统的后台功能。

1

商城系统后台的设计分析

商城系统后台的设计分析,主要包含需求分析、架构设计和数据库模型设计。

1.需求分析

商城系统后台的功能如下图所示。

2.架构设计

为实现商城系统后台,采用Django框架作为服务器端的基础框架,采用“HTML + CSS + JavaScript”搭建前端,数据库采用MySQL,如下图所示。

3.数据库模型设计

准确了解用户需求是整个系统设计的基础,也是最困难、最耗费时间的一步。在了解清楚需求后,开始进行数据库模型设计。模型设计分为逻辑模型设计和物理模型设计。

  • 逻辑模型设计:将业务需求具体化,实现具体业务场景所描述的东西。比如,用户信息包括用户姓名、性别和联系电话等属性,一个商品分类可以有0个、1个或多个商品。
  • 物理模型设计:针对逻辑模型分析的内容,在具体的物理介质上实现出来。比如,在MySQL数据库中编写SQL脚本建立用户信息表。

从逻辑模型到物理模型,是一个从抽象到具体、不断细化完善的过程。一般使用PowerDesign或者PDMan进行数据库的模型设计。

(1)生成物理模型

在PDMan中可以新增模型,设计商品分类表和商品表,如下图所示。商品分类表和商品表是“一对多”关系。

在模型设计完成后,可以导出DDL脚本,然后在指定数据库中生成数据表。

(2)反向生成Django模型

在完成数据库的物理模型设计后,可以根据物理模型反向生成Django模型。

在VS Code终端控制台中输入如下命令:

代码语言:javascript
复制
python manage.py inspectdb                  #输出数据库中的所有表到控制台中python manage.py inspectdb > models.py    #输出到models.py文件中

当数据表中字段很多时,反向生成模型可以提高模型的编写效率。

2

使用Django自带的Admin后台管理系统

使用Django的Admin后台管理系统,不写一行代码即可完成数据的增加、删除、修改和查询。只要定义好模型,Django就能生成一个具备增加、删除、修改和查询功能的应用。这也是Django之所以非常流行的一个很大原因。如果对软件界面效果要求不高,或者只是临时做个界面录入信息,则可以采用这种方式。

Django自带的Admin后台管理系统可用于对网站中的各个模块进行管理,比如文字、图片、文件等的增加、删除、修改和查询。

1.创建商城系统后台项目

新建一个项目myshop-back,接下来的操作都在该项目中完成。在该项目下创建一个apps目录,用来放置所有的商城应用。

(1)输入如下命令创建应用。

代码语言:javascript
复制
python manage.py startapp basic  #基础应用python manage.py startapp goods  #商品应用python manage.py startapp users  #用户应用python manage.py startapp order  #订单应用

创建完成后,将这4个应用目录放到apps目录下,如下图所示。

打开本书配套资源中的“settings.py”,在INSTALLED_APPS列表中增加商城系统后台的相关应用,如以下代码所示。

代码语言:javascript
复制
INSTALLED_APPS = [    …    'apps.basic', #注意写法    'apps.goods', #注意写法    'apps.order', #注意写法    'apps.users', #注意写法    …]

(2)创建商品分类模型和商品模型。

打开本书配套资源中的“apps/goods/models.py”,新增模型类GoodsCategory和Goods,如以下代码所示。

代码语言:javascript
复制
…class GoodsCategory(BaseModel):    id = models.AutoField(primary_key=True)    name=models.CharField(max_length=50,verbose_name='分类名称',default='')    parent=models.ForeignKey("self", null=True,blank=True,verbose_name="父类",on_delete=models.DO_NOTHING,related_name="sub_cat")    logo=models.ImageField(verbose_name="分类logo图片",upload_to= "uploads/goods_img/")    is_nav=models.BooleanField(default=False,verbose_name='是否显示在导航栏')    sort=models.IntegerField(verbose_name='排序')

    …

class Goods(models.Model):    STATUS=(        (0,'正常'),        (1,'下架'),    )    name = models.CharField(max_length=50,verbose_name='商品名称', default='')    category=models.ForeignKey(GoodsCategory,blank=True,null=True, verbose_name='商品分类',on_delete=models.DO_NOTHING)    market_price = models.DecimalField(max_digits=8,default=0, decimal_places=2,verbose_name='市场价格')    price = models.DecimalField(max_digits=8, decimal_places=2,default=0,verbose_name='实际价格')    …    status=models.IntegerField(default=0,choices=STATUS)    …

限于篇幅,其他模型不一一列出,读者可以查阅本书配套资源中的代码。接下来继续配置Admin后台管理系统。

2.登录Admin后台管理系统

在登录Admin后台管理系统前,需要创建一个管理员用户。在VS Code终端界面输入如下命令,之后根据命令提示输入用户名和密码即可完成用户的注册。邮箱可以不用输入。

代码语言:javascript
复制
python manage.py createsuperuser

接下来就可以登录Admin后台管理系统了。访问Admin后台管理系统“http://localhost:8000/admin/”,使用刚才创建的管理员用户名和密码进行登录,登录后的界面如下图所示。

3.配置Admin后台管理系统

默认用户模型和组模型会在Admin后台管理系统中显示出来,其他的模型还需要在每个应用中设置相应的文件才能正常显示。

(1)设置apps.py文件

打开本书配套资源中的“goods/apps.py”,在其中添加如下代码。

代码语言:javascript
复制
from django.apps import AppConfigclass GoodsConfig(AppConfig):    name = 'apps.goods'    verbose_name="商品管理"

这样,“商品管理”会显示在Admin后台管理系统中的左侧菜单导航中。

(2)设置__init__.py文件

打开本书配套资源中的“goods/__init__.py”,在其中添加如下代码。

代码语言:javascript
复制
from .apps import GoodsConfigdefault_app_config = 'apps.goods.GoodsConfig'

__init__.py是应用的初始化文件。在该文件中设置default_app_config变量,用来指向apps.py文件中定义的AppConfig类。

(3)设置admin.py文件

打开本书配套资源中的“goods/admin.py”,在其中添加如下代码。

代码语言:javascript
复制
from django.contrib import adminfrom apps.goods.models import *@admin.register(GoodsCategory)class GoodsCategoryAdmin(admin.ModelAdmin):    admin.site.site_title="我的特产商城后台"    admin.site.site_header="我的特产商城后台"    admin.site.index_title="商城平台管理"    #设置列表中显示的字段    list_display=['name','logo','sort','create_time']    #搜索    search_fields=['name','parent_id']    #过滤    list_filter=['name','parent_id']    #设置日期选择器    date_hierarchy='create_time'    #设置每页现实的数据量    list_per_page=10    #设置排序    ordering=['sort']@admin.register(Slide)class SlideAdmin(admin.ModelAdmin):    #设置列表中显示的字段    list_display=['goods_id','sort','images']

上述代码的实现过程如下。

(1)自定义一个继承自ModelAdmin的类。该类用来在Admin后台管理系统中显示模型。

(2)使用装饰器将模型类Goods和GoodsAdmin关联起来,并注册到Admin后台管理系统中。

admin.py用于将项目应用定义的模型独享注册,并绑定到Admin后台管理系统中。注册后,Admin后台管理系统自动拥有了该模型对应数据表的增加、删除、修改和查询功能。

刷新Admin后台管理系统界面,如下图所示。可以看到在左侧的菜单“商品管理”下出现了商品信息、商品分类和首页轮播等二级菜单。

单击左侧菜单中的“商品分类”链接,右侧会显示商品分类列表数据。商品分类列表数据按照在代码中定义的规则进行显示,如下图所示。

此外,还可以对商品分类表和商品表进行数据维护,如下三图所示。

感兴趣的读者可以动手试试Django的Admin后台管理系统中的其他功能。

本文摘自《Django + Vue.js实战派――Python Web开发与运维》,更多精彩内容欢迎阅读本书!

限时五折

扫码查看本书详情

代码语言:javascript
复制
如果喜欢本文欢迎 在看丨留言丨分享至朋友圈 三连
 热文推荐  
一文理解分布式开发中的服务治理
特斯拉为何使用.NET Core技术框架?
后深度学习时代,推荐系统向何处去?
全流程指导,从0开始打造自己的API网关

▼点击阅读原文,了解本书详情~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博文视点Broadview 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档