Python版超市管理系统源代码

python版超市管理系统源代码,基于django+mysql安装步骤
1、在mysql中创建名为demo_django_supermarket的数据库,修改config/setting.py中数据库用户及密码
create database demo_django_supermarket default character set utf8mb4 collate utf8mb4_unicode_ci;2、pip install -r requirements
3、初始化数据库:manage.py migrate
4、设置一个超级管理员 admin (admin@123456)
manage.py loaddata fixtures/root_manager.yaml5、启动服务
manage.py runserver localhost:8001完整程序源代码下载地址:
https://download.csdn.net/download/weixin_42756970/86819049
程序运行截图
后台管理
setting.py
django settings for config project.generated by 'django-admin startproject' using django 2.1.4.for more information on this file, seehttps://docs.djangoproject.com/en/2.1/topics/settings/for the full list of settings and their values, seehttps://docs.djangoproject.com/en/2.1/ref/settings/import os# build paths inside the project like this: os.path.join(base_dir, ...)base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))# quick-start development settings - unsuitable for production# see https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/# security warning: keep the secret key used in production secret!secret_key = '_joao(!w!oc6ktbxr55x4$ioy4$#u6#09cx$st=pp3sj(6lm!)'# security warning: don't run with debug turned on in production!debug = trueallowed_hosts = ['*', # '127.0.0.1', # '10.10.10.154', # '120.229.216.9' ]# application definitioninstalled_apps = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app', 'gunicorn',]middleware = [ 'django.middleware.security.securitymiddleware', 'django.contrib.sessions.middleware.sessionmiddleware', 'django.middleware.common.commonmiddleware', 'django.middleware.csrf.csrfviewmiddleware', 'django.contrib.auth.middleware.authenticationmiddleware', 'django.contrib.messages.middleware.messagemiddleware', 'django.middleware.clickjacking.xframeoptionsmiddleware',]root_urlconf = 'config.urls'templates = [ { 'backend': 'django.template.backends.django.djangotemplates', 'dirs': [base_dir, os.path.join('templates')], 'app_dirs': true, 'options': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, },]wsgi_application = 'config.wsgi.application'# database# https://docs.djangoproject.com/en/2.1/ref/settings/#databasesdatabases = { 'default': { 'engine': 'django.db.backends.mysql', 'host': '127.0.0.1', 'port': '3306', 'name': 'demo_django_supermarket', 'user': 'root', 'password': 'sxing86', 'options': { 'charset': 'utf8mb4' } }}# password validation# https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validatorsauth_password_validators = [ { 'name': 'django.contrib.auth.password_validation.userattributesimilarityvalidator', }, { 'name': 'django.contrib.auth.password_validation.minimumlengthvalidator', }, { 'name': 'django.contrib.auth.password_validation.commonpasswordvalidator', }, { 'name': 'django.contrib.auth.password_validation.numericpasswordvalidator', },]# internationalization# https://docs.djangoproject.com/en/2.1/topics/i18n/language_code = 'zh-hans'time_zone = 'asia/shanghai'use_i18n = trueuse_l10n = trueuse_tz = false# use_tz = true # 时区# static files (css, javascript, images)# https://docs.djangoproject.com/en/2.1/howto/static-files/static_url = '/static/'static_path = os.path.dirname(os.path.abspath(__file__))static_path = os.path.join(static_path, '../')staticfiles_dirs = ( os.path.join(static_path, 'static/'),)media_root = os.path.join(base_dir, 'static/media')0001_initial.py
# generated by django 2.2.2 on 2022-03-16 18:26from django.db import migrations, modelsclass migration(migrations.migration): initial = true dependencies = [ ] operations = [ migrations.createmodel( name='goods', fields=[ ('id', models.autofield(auto_created=true, primary_key=true, serialize=false, verbose_name='id')), ('name', models.charfield(max_length=20)), ('sale_price', models.floatfield()), ('cost_price', models.floatfield()), ('weight', models.floatfield()), ('sort', models.integerfield()), ('produce_date', models.datefield()), ('limit_date', models.datefield()), ('lower', models.floatfield(default=0)), ('isdelete', models.booleanfield(default=false)), ], ), migrations.createmodel( name='manager', fields=[ ('id', models.autofield(auto_created=true, primary_key=true, serialize=false, verbose_name='id')), ('account', models.charfield(max_length=20)), ('pwd', models.charfield(max_length=40)), ('name', models.charfield(max_length=20)), ('gender', models.integerfield(default=0)), ('phone', models.charfield(max_length=11)), ('authority', models.integerfield(default=0)), ('isdelete', models.booleanfield(default=0)), ], ), migrations.createmodel( name='message', fields=[ ('id', models.autofield(auto_created=true, primary_key=true, serialize=false, verbose_name='id')), ('time', models.datetimefield(auto_now=true)), ('type', models.integerfield()), ('content', models.textfield()), ('contact', models.charfield(max_length=20)), ('name', models.charfield(max_length=20)), ('isread', models.booleanfield(default=false)), ], ), migrations.createmodel( name='provider', fields=[ ('id', models.autofield(auto_created=true, primary_key=true, serialize=false, verbose_name='id')), ('name', models.charfield(max_length=20)), ('address', models.charfield(max_length=40)), ('phone', models.charfield(max_length=11)), ('isdelete', models.booleanfield(default=false)), ], ), migrations.createmodel( name='record', fields=[ ('id', models.autofield(auto_created=true, primary_key=true, serialize=false, verbose_name='id')), ('location', models.integerfield()), ('date', models.datefield(auto_now=true)), ('purchase_num', models.integerfield(null=true)), ('sale_num', models.integerfield(null=true)), ('withdraw_num', models.integerfield(null=true)), ('goods', models.foreignkey(on_delete=true, to='app.goods')), ], ), migrations.addfield( model_name='goods', name='provider', field=models.foreignkey(on_delete=true, to='app.provider'), ), ]0002_initial_data.py
# generated by django 2.2.2 on 2022-03-16 18:26import datetimeimport osimport randomimport shutilfrom django.db import migrationsdef init_manager(apps, args): manager = apps.get_model('app', 'manager') manager( account=admin, pwd=123456, name=admin, gender=1, phone=15512345678, ).save()def init_providers(apps, args): provider = apps.get_model('app', 'provider') for i in range(3): p = provider() p.name = 供应商%d % i p.address = (%s)请关注公众号:python代码大全 % p.name p.phone = 15512345678%d % i p.save()def init_goods(apps, args): category_map = { 0: 零食饮料, 1: 生鲜果蔬, 2: 粮油副食, 3: 清洁用品, 4: 家居家电, } # 循环 /static/media/resources/goods/* current_path = os.path.dirname(os.path.abspath(__file__)) current_path = current_path.replace(app\\migrations, ) resource_img_dir = %s/static/media/resources/goods % current_path upload_img_dir = %s/static/media/goods_img % current_path files = [f for f in os.listdir(resource_img_dir) if os.path.isfile(os.path.join(resource_img_dir, f))] print(files) # 复制+改名 成 /static/media/goods_img/{category_num}_{good_id}.jpg date_now = datetime.datetime.utcnow() good = apps.get_model('app', 'goods') record = apps.get_model('app', 'record') for index, f in enumerate(files): category_id = random.randrange(0, 5) provider_id = random.randrange(1, 4) cost_price = random.randrange(5, 100) sale_price = cost_price + random.randrange(5, 20) produce_date = date_now - datetime.timedelta(days=(category_id + 1) * 365) limit_date = date_now + datetime.timedelta(days=(category_id + 1) * 365) purchase_date = produce_date + datetime.timedelta(days=cost_price) sale_date = purchase_date + datetime.timedelta(days=sale_price) # total = good.objects.count() # 随机造数据 g = good( name=category_map[category_id] + str(index), sort=category_id, cost_price=float(cost_price), sale_price=float(sale_price), produce_date=produce_date, limit_date=limit_date, weight=float(sale_price + cost_price), provider_id=provider_id, ) # g.id = total+1 g.save() image_path = %s/%d_%d.png % (upload_img_dir, category_id, g.id) shutil.copyfile(%s/%s % (resource_img_dir, f), image_path) location_id = random.randrange(0, 8) record( location=location_id, purchase_num=sale_price * cost_price, goods_id=g.id, date=purchase_date, ).save() record( location=location_id, goods_id=g.id, date=sale_date, sale_num=sale_price * cost_price / (location_id + 1), ).save()class migration(migrations.migration): dependencies = [ ('app', '0001_initial'), ] operations = [ migrations.runpython(init_providers), migrations.runpython(init_goods), migrations.runpython(init_manager), ]完整程序源代码下载地址:
https://download.csdn.net/download/weixin_42756970/86819049

如何使用半导体制造二极管?
为什么物联网正在吞噬嵌入式实时操作系统
低压电笔一般适用于多少v以下的交流电压?
Pall助力中国半导体市场加速发展
技术创新赋能低碳 AI-LiNK探路装配式建筑行业获认可
Python版超市管理系统源代码
肉制品检测仪器设备的产品性能
手性纳米颗粒为3D显示和实时全息技术从概念跨入现实
欧司朗将与大陆集团进行拆分
英威腾光伏荣获2023“光能杯”最具影响力光伏逆变器企业
全面屏的小米7要来了!外观酷炫,搭载最新骁龙845,价格将突破3000,明年年初见
如何用一款手机彰显高端大气的时尚风格?
Redmi发布全新超大屏电视Redemi MAX86
为何智能音箱受互联网企业的欢迎
不是最专业,但是最易懂,教你如何选购SATA和M2固态硬盘
32 岁的台积电,3 大战役成就龙头地位
云计算在广电行业的应用简述
特斯拉为湖北地区免费提供充电服务 31日结束
深度测评雪铁龙C5 1.8T自动豪华型
高精度0-1欧姆转0-10V直流电阻信号变送模块