Django 搭建数据管理web——商品管理

教材:

python web 企业级项目开发教程 黑马程序员 5.4 实例1:商品管理

实验步骤:

1.创建项目(任意名字)和应用(goods)

2.在项目文件夹(manage.py文件所在路径)新建templates文件夹,在其中新建good.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="utf-8"><title>商品列表</title>
</head>
<body>
<div><table cellpadding="1" cellspacing="0" border="1" style="width:100%;max-width:100%;margin-bottom:20px"><caption align="top" style="font-size:26px">商品列表</caption><thead><tr><th>编号</th><th>名字</th><th>价格</th><th>库存</th><th>销量</th><th>管理</th></tr></thead><tfoot align="right"></tfoot><tbody>{% for row in goods %}<tr align="center"><td>{{ forloop.counter }}</td><td>{{ row.name }}</td><td>{{ row.price }}</td><td>{{ row.stock }}</td><td>{{ row.sales }}</td><td><a href="/delete{{ row.id }}">删除</a></td></tr>{% endfor %}</tbody></table>
</div>
</body>
</html>

3.修改应用goods的models.py文件

from django.db import models
class Goods(models.Model):create_time=models.DateTimeField(auto_now_add=True,verbose_name="创建时间")update_time=models.DateTimeField(auto_now=True,verbose_name="更新时间")name =models.CharField(max_length=50,verbose_name="名字")price=models.DecimalField(max_digits=10,decimal_places=2,verbose_name="价格")stock=models.IntegerField(default=0,verbose_name='库存')sales=models.IntegerField(default=0,verbose_name='销量')class Meta:db_table = 'tb_goods'verbose_name='商品'verbose_name_plural=verbose_namedef _str_(self):return '%s: %s' % (self.id,self.name)

 4.修改应用goods的views.py文件

from django.shortcuts import render,loader
from django import http
from .models import Goods
def get_goods(request):t = loader.get_template('good.html')goods = Goods.objects.all()context = {'goods':goods,}response = t.render(context,request)return http.HttpResponse(response)
def del_good(request,gid):good = Goods.objects.get(id=gid)good.delete()return http.HttpResponseRedirect('/')

5.修改主路由

from django.contrib import admin
from django.urls import path,include,re_pathurlpatterns = [path('admin/', admin.site.urls),re_path('^',include('goods.urls')),
]

 6.在应用goods下,新建urls.py文件,内容如下

from django.urls import path,re_path
from . import views
urlpatterns = [re_path(r'^$',views.get_goods),re_path(r'^delete(\d+)$',views.del_good),]

7.修改settings.py文件

#34line
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','goods',
]#56 line
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR,'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',],},},
]

 8.生成迁移文件

py manage.py migrations

py manage.py migrate

 9.进入python shell,添加数据记录

#先执行
py manage.py shell
#引入 from 应用名.models import 类名
from good.models import Goods
Goods.objects.create(name="test1",price="10",stock="50",sales="30")
Goods.objects.create(name="test2",price="20",stock="50",sales="30")
Goods.objects.create(name="test3",price="30",stock="50",sales="30")

 10.开启服务

py manage.py runservser

11.测试并完成

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/13907.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

C语言中操作符详解(中)

C语言中操作符详解中 放在最前面的1、操作数&#xff08;Operands&#xff09;2、单目操作符2.1、分类2.2、举例分析&#xff08;上代码&#xff09; 3、关系操作符3.1、分类3.2、举例分析&#xff08;上代码&#xff09; 4、逻辑操作符4.1、分类4.2、举例分析&#xff08;上代…

生成模型——扩散模型(Diffusion Model)

一、扩散模型简介 扩散模型&#xff08;Diffusion Model&#xff09;是一种生成模型&#xff0c;主要用于图像生成等任务。它的基本原理源于扩散过程的物理概念&#xff0c;通过最小化去噪过程中的重建损失&#xff08;通常使用均方误差&#xff09;来训练模型&#x…

ssm101珠宝首饰交易平台开发+jsp.zip(论文+源码)_kaic

毕业设计&#xff08;论文&#xff09; 珠宝首饰交易平台 学 院 专 业 班 级 学 号 用户姓名 指导教师 完成日期 …

关于我、重生到500年前凭借C语言改变世界科技vlog.18——内存函数

文章目录 1. memcpy函数2. memmove函数3. memset函数4. memcmp函数希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 内存函数是用于 操作内存块的一组函数&#xff0c;它们可以对内存进行复制、移动、设置和比较等操作。这些函数主要在 <str…

Redis高可用-主从复制

这里写目录标题 Redis主从复制主从复制过程环境搭建从节点配置常见问题主从模式缺点 Redis主从复制 虽然 Redis 可以实现单机的数据持久化&#xff0c;但无论是 RDB 也好或者 AOF 也好&#xff0c;都解决不了单点宕机问题&#xff0c;即一旦 redis 服务器本身出现系统故障、硬…

NVR设备ONVIF接入平台EasyCVR视频融合平台社会面视频资源接入视频专网,应该如何处理?

在数字化时代&#xff0c;视频监控系统已成为社会安全管理的重要组成部分。随着城市化进程的加速和信息技术的发展&#xff0c;如何有效整合和管理跨区域、跨行业的视频监控资源&#xff0c;成为了提升社会治理能力的关键。 EasyCVR视频融合云平台&#xff0c;作为TSINGSEE青犀…

通过全球最前沿的技术解决视频拼接中时延带来的的应用缺陷,使得全景视频拼接能够真正得以大范围使用和推广的智慧地产开源了。

智慧地产视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。通过计算机视觉和…

推荐一款好用的postman替代工具2024

Apifox 是国内团队自主研发的 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台&#xff0c;是非常好的一款 postman 替代工具。 它通过一套系统、一份数据&#xff0c;解决多个系统之间的数据同步问题。只要定义好接口文档&#xff0c;接口调试、数据 Mock、接口…

java作业项目以及azkaban的操作

参考内容&#xff1a; azkaban简介及azkaban部署、原理和使用介绍 1.在azkaban创建project 2.上传flow文件和project文件的压缩包 flow文件内容: nodes:- name: Testtype: commandconfig:command: java -jar /data/job/mtm-job-0.0.1-SNAPSHOT.jar --spring.profiles.activ…

【重生之我要苦学C语言】深入理解指针5

深入理解指针5 回调函数 回调函数就是一个通过函数指针调用的函数 如果你把函数的指针(地址)作为参数传递给另一个函数&#xff0c;当这个指针被用来调用其所指向的函数时&#xff0c;被调用的函数就是回调函数 回调函数不是由该函数的实现方直接调用&#xff0c;而是在特定的…

IOPaint模型部署教程

一、介绍 IOPaint是一款功能全面且强大的AI图像处理工具&#xff0c;它不仅免费开源&#xff0c;还由SOTA&#xff08;State-of-the-Art&#xff0c;即最先进&#xff09;AI模型驱动&#xff0c;为图像编辑和修复带来了前所未有的便利和高效。以下是对IOPaint的详细介绍&#…

吊打面试官系列:hashCode() 相同,equals() 就一定相等吗?

在编程的世界里&#xff0c;hashCode() 和 equals() 是一对形影不离的好兄弟。它们在Java中定义于Object类中&#xff0c;是每个Java对象都继承的两个方法。但是&#xff0c;如果你认为只要两个对象的hashCode()相同&#xff0c;它们的equals()就一定相等&#xff0c;那你就大错…

阿托伐他汀降脂疗效与安全性真实世界数据整理!

2024年9月&#xff0c;《中国医疗保险》杂志发布了题为《阿托伐他汀仿制药治疗高脂血症疗效与安全性的多中心回顾性队列研究》的重要研究结果。该研究由首都医科大学宣武医院牵头&#xff0c;联合上海交通大学医学院附属瑞金医院、吉林大学第一医院等10家国内顶尖三甲医院共同完…

深入剖析【C++继承】:单一继承与多重继承的策略与实践,解锁代码复用和多态的编程精髓,迈向高级C++编程之旅

​​​​​​​ &#x1f31f;个人主页&#xff1a;落叶 &#x1f31f;当前专栏: C专栏 目录 继承的概念及定义 继承的概念 继承定义 定义格式 继承基类成员访问⽅式的变化 继承类模板 基类和派⽣类间的转换 继承中的作⽤域 隐藏规则 成员函数的隐藏 考察继承【作⽤…

“嵌入”在大语言模型中是解决把句子转换成向量表示的技术

上一篇&#xff1a;《人工智能是这样理解“情绪”的》 序言&#xff1a;这段话要优化吗&#xff1f;““嵌入”是一种将句子、单词或其他语言单位转换为向量表示的技术。这个向量通常位于高维空间中&#xff0c;它以一种能够表达相似性的方式编码出文本的含义或上下文。嵌入层…

操作系统——内存分区管理

本章主要讨论为什么要给内存进行划分和如何划分的问题。 为了给每一个进程都分配一个大小合适的内存块 以连续存储进程的程序和数据&#xff0c;使得各进程可以并发执行 目录 一、内存的划分方法 1、固定分区法 2、动态分区法 3、动态分区的数据管理结构 二、分区的分配与回…

ML 系列: 第 24 节 — 离散概率分布(泊松分布)

目录 一、说明 二、固定时间间隔示例 三、固定间隔的示例 四、泊松分布的主要特征 五、示例 5.1 平均客户数的计算&#xff1a; 5.2 用于计算和绘制泊松分布的 Python 代码&#xff1a; 一、说明 泊松概率分布是一种离散概率分布&#xff0c;它表示在固定的时间或空间间隔内发生…

【comfyui教程】如何用 ComfyUI 修复和上色老照片?详细教程让老照片焕发新生

前言 如何用 ComfyUI 修复和上色老照片&#xff1f;详细教程让老照片焕发新生 老照片承载着无数回忆&#xff0c;可时光不饶人&#xff0c;随着岁月流逝&#xff0c;它们渐渐变得模糊、泛黄&#xff0c;甚至出现了褪色、裂痕。对于想要留住这份珍贵记忆的人来说&#xff0c;修…

ThinkServer SR658H V2服务器BMC做raid与装系统

目录 前提准备 一. 给磁盘做raid 二. 安装系统 前提准备 磁盘和系统BMC地址都已经准备好&#xff0c;可正常使用。 例&#xff1a; 设备BMC地址&#xff1a;10.99.240.196 一. 给磁盘做raid 要求&#xff1a; 1. 将两个894G的磁盘做成raid1 2. 将两块14902G的磁盘各自做…

BUUCTF pwn2_sctf_2016 int 0x80方法

本文目的 BUUCTF的PWN的第一页的pwn2_sctf_2016的libc不适用辣&#xff0c;但网上一搜全是libc 然后怎么办嘞&#xff0c;都明摆着有个int 0x80&#xff0c;当然是用啊 所以水一篇 早上中午晚上好 老三样&#xff0c;下载程序&#xff0c;打开ida&#xff0c;拖进去 一眼好几…